Forum: mysqli_num_rows

Forum huvudsida -> Programmering -> mysqli_num_rows

Sidor: 1

Till botten

ELF 18:13 - 17:e Januari 2009 | Post #1
Medlem
Inlägg: 73


Skicka PM
Jag har problem med "mysqli_num_rows".
Det här är felmeddelandet:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:wampwwwtorrentlanprocessform.php on line 59
Jag har sökt på det. Men hittar inget svar som hjälper. Folk skriver bara precis vad som står i felmeddelandet. Att mysqli_num_rows kräver ett mysqli_result. Det hjälper inte så mycket...
Jag har läst och lärt från boken "PHP & MySQL for Dummies" och försökt få koden att fungera till mitt projekt.
Det här är koden:
  1. <?php
  2. /* The information needed to connect to the databse */
  3. $host = "127.0.0.1";
  4. $user = "root";
  5. $password = "";
  6. $database = "test";
  7. $cxn = mysqli_connect($host,$user,$password,$database);
  8.  
  9. /* Gets todays date.
  10. Difference between upper and lowercase */
  11. $date = date("Y-m-d");
  12.  
  13. /* This part gets the filename without the file extension and file extension of the file.
  14. Lets say we have a file called abc.torrent. The code splits the name into two parts.
  15. file_basename that is abc and
  16. file_ext that is .torrent */
  17. $filename = $_FILES[Path][name];
  18. ##$file_basename = substr($filename, 0, strripos($filename, '.'));##
  19. $file_ext = substr($filename, strripos($filename, '.'));
  20.  
  21. /* If the filename is empty, the torrent won't be uploaded */
  22. if($_POST[Name] == "")
  23. {
  24. echo "Du har glömt att ange ett namn!n";
  25. }
  26. /* If a file haven't been chosen, the torrent won't be uploaded */
  27. elseif($_FILES[Path][name] == "")
  28. {
  29. echo "Du har glömt att lägga till en fil!n";
  30. }
  31. /* If not the file extension is .torrent, the torrent won't be uploaded */
  32. elseif($file_ext != ".torrent")
  33. {
  34. echo "Du kan endast ladda upp torrentfiler!n";
  35. }
  36. /* If the filesize is bigger than 1mb, the torrent won't be uploaded */
  37. elseif($_POST[MAX_FILE_SIZE] > 1000000)
  38. {
  39. echo "Filen är för stor!n";
  40. }
  41. /* If everything is fine, the torrent will be uploaded */
  42. else
  43. {
  44. echo "<p>Torrent filen har laddats upp</p>";
  45.  
  46. /* The connection is established */
  47.  
  48. /* This checks if the torrentname allready excists */
  49. $query = "SELECT COUNT(*) FROM test";
  50. $result = mysqli_query($cxn,$query);
  51. $nrows = mysqli_num_rows($result);
  52.  
  53.  
  54. /*
  55. $query = "INSERT INTO test (torType,torName,torDate) VALUES ($_POST[Type],$_POST[Name],$date)";
  56. mysqli_query($cxn,$query);
  57. */
  58. }
  59. ?>


Det är koden näst längst ner som strular. Koden som ska kolla om namnet redan finns.

hmm, forumet pallar inte slash till 100%... Det har ersatt slash med utropstecken i koden och tagit bort det helt i sökvägen ovanför koden...

-------------------------
May the Elf be with you



FunkyChicken 02:48 - 18:e Januari 2009 | Post #2
Nyhetsredaktör
Inlägg: 800


Skicka PM
Det kan vara så att din query inte går att genomföra. Isf får du inte ett result object tillbaka utan en bool med värde false. Försöker du sen skicka in den till mysqli_num_rows så brakar allt ihop.




ELF 12:21 - 18:e Januari 2009 | Post #3
Medlem
Inlägg: 73


Skicka PM
Varför skulle inte min query fungera?
Skippar jag $nrows = mysqli_num_rows($result); så får jag inget felmeddelande.

-------------------------
May the Elf be with you

Senast redigerad 12:22 - 18:e Januari 2009


FunkyChicken 02:47 - 21:a Januari 2009 | Post #4
Nyhetsredaktör
Inlägg: 800


Skicka PM
Ditt felmedelande säger att argumentet till num_rows är av typen bool.
Argumentet är $result.
$result kommer from mysqli_query.
Alltså har mysqli_query returnerat en bool.
Anledningen till att den gör det är att din query inte går att utföra. Antingen är din query fel eller så är mysql trasigt.




ELF 12:50 - 21:a Januari 2009 | Post #5
Medlem
Inlägg: 73


Skicka PM
Tack för all hjälp. Ibland så är man så inne i programmeringen så man blir blind... (Får skaffa kikare så jag ser bättreSmiley)
FEL: $query = "SELECT COUNT(*) FROM test";
R,,TT: $query = "SELECT COUNT(*) FROM torrent";

Nu fungerar det. Men det returnerar bara att jag har en rad. Jag har tre rader. Får kolla vidare lite och se om jag hittar felet...

EDIT:
Jag ändrade COUNT(*) till *. Nu står det att jag har 3 rader.
Men "SELECT COUNT(*)" måste väl fungera mycket bättre när det funkar?

-------------------------
May the Elf be with you

Senast redigerad 13:39 - 21:a Januari 2009


FunkyChicken 21:23 - 21:a Januari 2009 | Post #6
Nyhetsredaktör
Inlägg: 800


Skicka PM
COUNT() ignorerar rader där en cell är tom. Kanske därför det inte vill sig?




ELF 11:46 - 22:a Januari 2009 | Post #7
Medlem
Inlägg: 73


Skicka PM
Jo, jag hade lite tomma celler. Men det hjälpte inte att fylla dom.
JMen om jag ska ha en kollumn som jag vet kan ha tomma celler. Går det att använda "SELECT COUNT(*)" eller ska jag använda "SELECT *" istället?

-------------------------
May the Elf be with you

Senast redigerad 11:54 - 25:e Januari 2009


pettersoft 16:16 - 18:e Februari 2009 | Post #8
Medlem
Inlägg: 5


Skicka PM
Använda alltid or die(mysql_error()); om du ska köra en SQL query.
Och du var fel parametrar i din query också.
$result = mysqli_query($cxn,$query);
ska vara:
$result = mysqli_query($query,$cxn);

Om det inte fungerar ändra till:
$result = mysqli_query($query,$cxn) or die(mysql_error());
Så står det om du har skrivit fel SQL syntax.




Sidor: 1

Forum huvudsida -> Programmering -> mysqli_num_rows
Atom feed

Du får inte posta i den här tråden | Till toppen