Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak przekazać wynik zapytania MySQL dla mysql_num_rows
Forum PHP.pl > Forum > Przedszkole
dr revuu
Witam. Wiem, że do mysql_num_rows należy przekazać wynik zapytania MySQL np. "SELECT", jednak nie wiem jak to zrobić, a mój kod:

  1. $result=mysql_query("SELECT name FROM $tabela");
  2.  
  3. //w poniższej linii jest błąd
  4. $ilosc=mysql_num_rows($result);
  5. echo $ilosc;


generuje błąd: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource (...).

Proszę o wskazówkę.
cycofiasz
Od kiedy to nazwy pól dajemy w apostrofach?
dr revuu
cycofiasz, będę uważał na składnię. Ale to nie rozwiązuje mojego problemu. Składnia, którą zastosowałem w innych skryptach nie powoduje błędów. Chodzi mi o to, jak przekazać wynik zapytania MySQL dla funkcji mysql_num_rows.
cycofiasz
Przekazujesz dobrze ale widocznie nadal coś jest źle w zapytaniu skoro problem nie rozwiązał się po usunięciu apostrofów. Czy teraz jest jakiś błąd?
potreb
A może najpierw zastosować mysql_error?
grzes999
Spróbuj najpierw zapisać wynik w tablicy, a dopiero później zliczyć elementy.

dr revuu
Zastosowałem mysql_error. Funkcja zwróciła pusty ciąg, czyli błędu nie było. Dla pewności wyświetliłem dane za pomocą mysql_fetch_assoc + echo.

Zapisywałem dane w mysql_fetch_assoc, ale wynik jest ten sam.

Błąd jest nadal w mysql_num_rows. Komunikat oznacza, że przekazuję mu błędny zasób.

Sprawdziłem tabele i pola tabeli pod względem poprawności. Wszystko jest w porządku. Wrzucę cały kod, być może błąd jest spowodowany czymś wcześniej:


  1. <?php
  2. if(is_logged())
  3. {
  4. if($lvl==1){
  5. $pob=mysql_query("SELECT prod FROM $gry");
  6.  
  7. while($po=mysql_fetch_assoc($pob)){
  8.  
  9. $po[prod]=trim($po[prod]);
  10. $spr=mysql_query("SELECT nazwa FROM $firma WHERE nazwa=$po[prod]");
  11.  
  12. if(mysql_num_rows($spr)>0){
  13.  
  14. echo 'Było<br />';
  15. }
  16. else{
  17.  
  18. $dodaj=mysql_query("INSERT INTO $firma SET nazwa=$po_pw[prod]");
  19. if($dodaj==TRUE){
  20.  
  21. echo 'Dodano <br />';
  22. }
  23.  
  24. else{
  25. echo 'Nie dodano<br />';
  26. }
  27. }
  28. }
  29. }
  30. }
cycofiasz
Kręcisz coś.

Daj echo "SELECT nazwa FROM $firma WHERE nazwa=$po[prod]"; i odpal to zapytanie przez phpMyAdmina i sprawdź czy zwraca błąd
amii
Jak na moje to tu brakuje ciapków powinno być tak:
  1. $po['prod']=trim($po['prod']);
jarmiar
w zapytaniach widze zmienne, masz te zmienne gdzieś zdeklarowane?

czy tak po prostu zapisujesz nazwy tabel?


ogolnie zapytanie tak wyglada
  1. SELECT pole FROM tabela
dr revuu
Wróciłem po jakimś czasie do skryptu i rzeczywiście błąd był w zapytaniu. Niestety moja pewność nad sprawdzeniem czy zapytanie jest poprawne:
  1. $ret = mysql_query("SELECT pole FROM tabela WHERE pole=wartosc) or die(mysql_error());

Niestety nie było.

Wygenerowany błąd:
  1. Unknown column 'Kolumna' in 'where clause'


Trochę tego nie rozumiem, bo 'Kolumna' to wartość, którą przekazałem polu. Column powinno być równe "pole". Ktoś może mi to wyjaśnić?
markonix
Cytat(dr revuu @ 4.09.2011, 19:16:32 ) *
Wróciłem po jakimś czasie do skryptu i rzeczywiście błąd był w zapytaniu. Niestety moja pewność nad sprawdzeniem czy zapytanie jest poprawne:
  1. $ret = mysql_query("SELECT pole FROM tabela WHERE pole=wartosc) or die(mysql_error());

Niestety nie było.

Wygenerowany błąd:
  1. Unknown column 'Kolumna' in 'where clause'


Trochę tego nie rozumiem, bo 'Kolumna' to wartość, którą przekazałem polu. Column powinno być równe "pole". Ktoś może mi to wyjaśnić?


Już nawet podświetlanie składni na forum wyraźnie wskazuje na błędy składniowe - mieszasz string zapytania SQL z PHP.
Zajrzyj: Temat: Jak poprawnie zadac pytanie
nospor
nie: pole=wartosc
a: pole='wartosc'
Czemu nie zaczynacie od podstaw tylko od razu skaczecie na środek jeziora?? Potopić się chcecie??
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.