Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][OOP i MySQLi] Problem :-)
Forum PHP.pl > Forum > PHP > Object-oriented programming
kipen
Korzystam obiektowego MySQLi i mam pewien problem, mianowicienie nie korzystam z zadnej biblioteki tylko to co jest wbudowane w php czyli klasa mysqli, mysqli_result, mysqli_smtm itp. i klasa mysqli dziala bez zarzutu tylko jak chce wyswiwtlic rekord z bazy klasą mysqli_result to wyswietla sie mi taki blad: Fatal error: Call to a member function fetch_array() on a non-object in [url do skryptu] a przed wyswietlaniem sie tego bledu nie wyswietlalo sie nic, jakies ewentualne bledy w skladni sa raczej niemozliwe bo kopiowalem caly przyklad z manuala php tej strony: php.net/manual/pl/mysqli-result.fetch-array.php
Oto skrypt:
  1. <?php
  2. $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
  3.  
  4. /* check connection */
  5. if (mysqli_connect_errno()) {
  6. printf("Connect failed: %s\n", mysqli_connect_error());
  7. exit();
  8. }
  9.  
  10. $query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
  11. $result = $mysqli->query($query);
  12.  
  13. /* numeric array */
  14. $row = $result->fetch_array(MYSQLI_NUM);
  15. printf ("%s (%s)\n", $row[0], $row[1]);
  16.  
  17. /* associative array */
  18. $row = $result->fetch_array(MYSQLI_ASSOC);
  19. printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
  20.  
  21. /* associative and numeric array */
  22. $row = $result->fetch_array(MYSQLI_BOTH);
  23. printf ("%s (%s)\n", $row[0], $row["CountryCode"]);
  24.  
  25. /* free result set */
  26. $result->free();
  27.  
  28. /* close connection */
  29. $mysqli->close();
  30. ?>


Moja wersja php na WebServie to 5.2.5 i mysle ze to moglo spowodowac ten blad, chociaz moze byc to cos innego jak myslicie?
Nie chcialbym wracac do proceduralnego MySQL wiec bardzo prosze o pomoc :-)
darko
Dobra, masz tabelę City z polami Name, CountryCode oraz ID, tak jak to jest w manualu? snitch.gif
zamień jeszcze:
  1. $result = $mysqli->query($query);

na
  1. $result = $mysqli->query($query);
  2. if(!$result)
  3. {
  4. printf("Errormessage: %s\n", $mysqli->error);
  5. }
kipen
Tak, mam taką tabelę a odnosnie tego co ty piszesz o wyswietleniu się bledu to zrobie to troche pozniej bo teraz nie jestem na kompie i napisze co wyszlo :-)

--EDIT--

Dopisałem to i wyskoczyło "Errormessage: Something is wrong in your syntax obok 'City ORDER by id LIMIT 3' w linii 1" + jeszcze ten błąd co miałem. Jak usunąłem "ORDER by id LIMIT 3" to zostało samo "Errormessage: Something is wrong in your syntax obok 'City' w linii 1 " + jeszcze ten błąd co miałem, a nazwy tabeli usuwać raczej nie wypada haha.gif

--EDIT--

Kiedy robię to stylem proceduralnym to wywala takie błędy:
Errormessage: Something is wrong in your syntax obok 'City ORDER by ID LIMIT 3' w linii 1
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in [url do skryptu] on line 18
()
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in [url do skryptu] on line 22
()
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in [url do skryptu] on line 26
()
Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in [url do skryptu] on line 30
KotWButach
A nie lepiej PDO?
Nie mieszaj mysql z mysqli a jezeli używasz mysql to on pobiera parametr dodatkowy.

Kiedyś uważałem że mysqli jest prostszy w użyciu ale tak nie jest, nie dla mnie wygrało PDO.
kipen
ehh... problem rozwiązany i tkwił w tym ze tabeli nie nazwałem City tylko table i jeszcze nie brałem tego w znaczniki `` smile.gif A tutaj nie pisałem ze mam bład Errormessage: Something is wrong in your syntax obok 'table ORDER by ID LIMIT 3' w linii 1 tylko Errormessage: Something is wrong in your syntax obok 'table ORDER by ID LIMIT 3' w linii 1 zeby juz nie komplikowac sprawy ze mam inna nazwe tabeli a w tym tkwil blad haha.gif
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.