PHP i MYSQL

0

Dobry wieczór,
Zabrałem się dzisiaj za tworzenie prostej (wręcz banalnie) prostej stronki wyświetlającej rekordy z bazy danych. Korzystam z Xamppa, login i haslo standardowe, nazwa bazy danych: laserbox. Stworzyłem plik db_connect.php, jego zawartość :

<? php $dbServer = 'localhost'; $dbUser = 'root'; $dbPassword = ''; $dbName = 'laserbox'; $mysqli = new mysqli($dbServer,$dbUser,$dbPassword,$dbName); if (mysqli_connect_errno() ){ echo 'Błąd bazy danych'; } Próbuję pobrać zawartość takim kodem: <!DOCTYPE HTML> <html lang="pl"> <head> <meta charset="utf-8" /> <title>LaserBox - Best laser game ever</title> <meta name="description" content="LaserBox - Best laser game ever" /> <meta name="keywords" content="game, laser, box, summer" /> <?php include ('db_connect.php'); $result = $mysqli->query("SELECT * FROM user;"); print_r($result); ?> </head> <body> </body> </html>

Niestety zamiast efektu (baza danych posiada dwa rekordy), otrzymuję coś takiego:
query("SELECT * FROM user;"); print_r($result); ?>

Sprawdzałem sam plik z połączeniem, nie wyrzuca błędów. Wiem, że print_r nie poda mi wyniku ale powinno zwrócić obiekt, a to by świadczyło, że jest ok.
Ma ktoś może jakiś pomysł co poszło nie tak? Dodam, że próbowałem z róznymi kodami zawsze ten sam efekt :(
P.S. Zapytanie w konsoli wykonuje się bez przeszkód.

0

Przy zmiennej $dbPassword = ''; masz tylko jeden cudzysłów. Powinny być dwa.

0
patz napisał(a):

Przy zmiennej $dbPassword = ''; masz tylko jeden cudzysłów. Powinny być dwa.

Hej, To są 2x ' nie jeden podwójny.

1

Napisz tak:

$row = $result->fetch_assoc();
print_r($row)

Jeśli jednak chcesz mieć wypisane wszystkie rekordy, to napisz to w pętli, przykład masz w manualu.
http://php.net/manual/en/mysqli-result.fetch-assoc.php
http://php.net/manual/en/mysqli.query.php

Co do Twojego problemu, że print_r($result) nie daje oczekiwanego rezultatu, to powiem tyle, że query nie jest od wypisywania danych, ona jest od zwracania wartości do innych obiektów?, czy jak to się fachowo nazywa.

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

Zwraca FALSE w przypadku niepowodzenia. Możesz to sprawdzić tak: var_dump($result) i jak bedzie FALSE, to znaczy, że coś poszło nie tak z Twoim zapytaniem. Dla powodzenia (czyli dla zapytań mniej więcej takich, które zwracają jakieś dane (SELECT, itp.)) wyrzuca dane do obiektu? (reprezentata zestawu wyników)? mysqli_result. Dla innych przypadków, gdy zapytanie powiedzie się pomyślnie zwraca TRUE (chociażby zapytanie $connect->query('FLUSH PRIVILEGES');).

Tu masz napisane jakich właściwości i metod możesz użyć dla mysqli_result:
http://php.net/manual/en/class.mysqli-result.php

mysqli_result oznacza tutaj obiekt? zwracany przez takie polecenie jak $result=$connect->query('/*...*/');, więc zamiast pisać mysqli_result->fetch_assoc()*, musisz napisać $result->fetch_assoc(), chyba, że nazwiesz swoją zmienną tak jak nazwana jest klasa, czyli $mysqli_result (chodź nie wiem, czy nie wyrzuci błędu, bo nie które nazwy są chyba zarezerwowane).

Tam, gdzie postawiłem znaki zapytania, to znaczy, że tego co napisałem nie jestem do końca pewien.

Legenda:
? - brak pewności, co do wypowiedzi
"*" - kod nieprawidłowy w tym przykładzie, chyba że mysqli_result zapisać wcześniej jako stałą (constant), chociaż nie wiem, czy to by zadziałało przypisując stałą do query, przykład:

CONST mysqli_result;
mysqli_result=$connect->query('/*...*/');
$result = mysqli_result->fetch_assoc();

Uwagi:
Zapisałem "*" w cudzysłowach, ponieważ bez nich na tym forum zwracany jest punktor z listy wypunktowanej <ul><li>...</li></ul>.

0

Dziękuję, już działa. Temat do zamknięcia :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1