Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Tworzenie nowej bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
deha21
Mam problem ze stworzeniem nowej bazy danych z poziomu PHP. Wcześniej skrypt mi działał, ale przełączeniu na nowszą wersję PHP, nie działa. Mój kod:
  1. $chost="localhost";
  2. $cuser="admin";
  3. $cpass="test";
  4.  
  5. $c = new mysqli($chost, $cuser, $cpass);
  6. mysqli_set_charset($c, "utf8");
  7.  
  8. $newbase = 'db_'.$code;
  9.  
  10. mysqli_query($c, "CREATE DATABASE ".$newbase);


Żadne błędy mi nie wyskakują, a mimo to baza się nie tworzy.
viking
new mysqli - tworzysz obiekt
mysqli_query - wywołujesz funkcję która nie ma nic wspólnego z utworzonym wcześniej obiektem
deha21
Cytat(viking @ 22.11.2017, 10:55:18 ) *
new mysqli - tworzysz obiekt
mysqli_query - wywołujesz funkcję która nie ma nic wspólnego z utworzonym wcześniej obiektem

Jak to nie ma? Ma. Przecież jest $c w funkcji, które wskazuje na nowe połączenie.
viking
Włącz zatem pełne raportowanie błędów i zobacz komunikaty. Albo w logach serwera.
deha21
Cytat(viking @ 22.11.2017, 11:05:05 ) *
Włącz zatem pełne raportowanie błędów i zobacz komunikaty. Albo w logach serwera.

No właśnie jest włączone raportowanie ale nic nie pokazuje. Logi serwera będę miał jutro ale nie wiem czy w nich znajdę te informacje.
viking
  1. ini_set('display_errors', true);
  2.  
  3. $chost="localhost";
  4. $cuser="admin";
  5. $cpass="test";
  6. mysqli_report(MYSQLI_REPORT_ALL);
  7. try{
  8. $c = new mysqli($chost, $cuser, $cpass);
  9. $c->set_charset("utf8");
  10.  
  11. $newbase = 'db_'.$code;
  12.  
  13. $res = $c->query("CREATE DATABASE ".$newbase);
  14. var_dump($res);
  15. } catch (mysqli_sql_exception $e) {
  16.  
  17. echo $e->getMessage();
  18. }
Pyton_000
Niech kolega Autor zobaczy różnice między Object a Procedural a swoim kodem: http://devdocs.io/php/mysqli.query
deha21
Cytat(Pyton_000 @ 22.11.2017, 12:00:02 ) *
Niech kolega Autor zobaczy różnice między Object a Procedural a swoim kodem: http://devdocs.io/php/mysqli.query

Znam różnicę. Ale on nie ma tutaj nic do rzeczy... Kod jest poprawnie napisany i powinien działać.
Okazało się, że mam zablokowane tworzenie bazy z poziomu PHP i mogę to rozwiązać jedynie przez API DirecAdmina. Tak też zrobiłem i działa.
viking
I chcesz powiedzieć że php żadnego błędu nie wyświetliło?
Bo powinno Access denied for user... to database db_...
deha21
Wyświetliło, ale dopiero po wrzucenia mysqli_report(MYSQLI_REPORT_ALL) w kod. Wcześniej pustka była.
viking
A mówiłem włącz pełne raportowanie - jest włączone wink.gif
Na przyszłość tak czy inaczej nie mieszaj kilku style ze sobą. Zaczynasz pisać w obiektowym to tego się trzymaj dla całego kodu.
deha21
Cytat(viking @ 22.11.2017, 13:38:13 ) *
A mówiłem włącz pełne raportowanie - jest włączone wink.gif
Na przyszłość tak czy inaczej nie mieszaj kilku style ze sobą. Zaczynasz pisać w obiektowym to tego się trzymaj dla całego kodu.

Włączone było z PHP, ale zapomniałem o MySQLu. A ten kod teraz przerabiam bo jest stary i nie przepisuję go na obiektowy, bo szkoda czasu jak działa smile.gif
Tomplus
Swoją drogą...
Nie masz dostępu do SSH? Z poziomu konsoli możesz mieć dostęp do logów błędów na już.
deha21
Nie mam. To zwykły hosting współdzielony.
viking
Sporo hostingów obecnie daje dostęp do ssh.
Tomplus
Dokładnie. Chyba tylko darmowe hostingi nie oferują dostępu SSH.

Czasem jest tak że dostęp do SSH jest, ale nie koniecznie informacja o tym jest dostępna na stronie hostingu, albo włączają go na prośbę klienta.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.