Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]MySQLi instrukcja zależna od ilości zwróconych zmiennych
Forum PHP.pl > Forum > Przedszkole
Syaoran i Sakura
Dobry wieczór!

Chciałbym się dowiedzieć, czy nie popełniam błędu stosując następujący skrypt w swoich programach:

  1. $mysqli=new mysqli("localhost","root","","baza01");
  2. $mysqli2=$mysqli->errno;
  3. if ($mysqli2 === NULL){echo "Nie udało się połonczyć...";}
  4. if ($mysqli2 != 0){echo "Nie ódało się połonczyć...";}
  5. if ($mysqli2 === 0)
  6. {
  7. $query="SELECT * FROM tibia where rid=\"1\" LIMIT 5\"";
  8. $result=$mysqli->query($query,MYSQLI_STORE_RESULT);
  9. $result2=$result->num_rows;
  10. if ($result2 == 0){echo "Nie zwrucono żadnych rekorduw";}
  11. if ($result2 == 1){echo "Zwrócono jeden rekord";}
  12. if ($result2 == 2){echo "Zwrócono dwa rekordy...";}
  13. if ($result >=3){echo "Trzy lub więcej rekordów";}


Podczas używania PHP w wersji 5.5 czy 5.4 czasami wyrzuca notice z informacją, że nie można przekonwertować obiektów na liczby całkowite. Program działa normalne, ale czy na pewno wszystko jest dobrze?
mmmmmmm
if ($result >=3){echo "Trzy lub więcej rekordów";}
powinno być
if ($result2 >=3){echo "Trzy lub więcej rekordów";}
L0k0
Hej, no to tak:

1) Masa błędów ortograficznych, które na sam kod wpływu nie mają ale na pewno mają na chęci co do pomocy...
2)
  1. $query="SELECT * FROM tibia where rid=\"1\" LIMIT 5\"";

Tutaj na pewno jest coś nie tak, bo masz 5 cudzysłowów wg mnie spokojnie powinno być tak:

  1. "SELECT * FROM `tibia` WHERE rid=1 LIMIT 5;"


3) W liniach 10-12 też powinieneś korzystać z === tak, jak powyżej

4) W linii 13 jak wspomniał Kolega wyżej: $reslut2

Pozdrawiam
com
  1. $mysqli=new mysqli("localhost","root","","baza01");
  2. if ($mysqli->connect_errno) {
  3. echo "Nie udało sie polaczyc...";
  4. exit();
  5. }
  6. $query="SELECT * FROM tibia where rid=1 LIMIT 5";
  7. if ($result=$mysqli->query($query,MYSQLI_STORE_RESULT)){
  8. $result2=$result->num_rows;
  9. if ($result2 === 0) echo "Nie zwrocono zadnych rekordow";
  10. if ($result2 === 1) echo "Zwrocono jeden rekord";
  11. if ($result2 === 2) echo "Zwrocono dwa rekordy...";
  12. if ($result2 >=3) echo "Trzy lub wiecej rekordow";
  13. }


o ile num_rows miesci sie w int, bo inaczej

Cytat
If the number of rows is greater than MAXINT, the number will be returned as a string.


i wtedy $result2 === n zwróci false wink.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.