Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP] Jak przekazać wynik zapytania MySQL dla mysql_num_rows

Napisany przez: dr revuu 14.08.2011, 14:46:37

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=http://www.php.net/mysql_query("SELECT name FROM $tabela");
  2.  
  3. //w poniższej linii jest błąd
  4. $ilosc=http://www.php.net/mysql_num_rows($result);
  5. http://www.php.net/echo $ilosc;


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

Proszę o wskazówkę.

Napisany przez: cycofiasz 14.08.2011, 14:51:49

Od kiedy to nazwy pól dajemy w apostrofach?

Napisany przez: dr revuu 14.08.2011, 15:59:43

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.

Napisany przez: cycofiasz 14.08.2011, 16:07:57

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?

Napisany przez: potreb 14.08.2011, 16:12:36

A może najpierw zastosować mysql_error?

Napisany przez: grzes999 14.08.2011, 16:32:45

Spróbuj najpierw zapisać wynik w tablicy, a dopiero później zliczyć elementy.

  1. http://www.php.net/mysql_fetch_assoc($result)

Napisany przez: dr revuu 14.08.2011, 18:38:59

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=http://www.php.net/mysql_query("SELECT prod FROM $gry");
  6.  
  7. while($po=http://www.php.net/mysql_fetch_assoc($pob)){
  8.  
  9. $po[prod]=http://www.php.net/trim($po[prod]);
  10. $spr=http://www.php.net/mysql_query("SELECT nazwa FROM $firma WHERE nazwa=$po[prod]");
  11.  
  12. if(http://www.php.net/mysql_num_rows($spr)>0){
  13.  
  14. http://www.php.net/echo 'Było<br />';
  15. }
  16. else{
  17.  
  18. $dodaj=http://www.php.net/mysql_query("INSERT INTO $firma SET nazwa=$po_pw[prod]");
  19. if($dodaj==TRUE){
  20.  
  21. http://www.php.net/echo 'Dodano <br />';
  22. }
  23.  
  24. else{
  25. http://www.php.net/echo 'Nie dodano<br />';
  26. }
  27. }
  28. }
  29. }
  30. }

Napisany przez: cycofiasz 14.08.2011, 18:46:00

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

Napisany przez: amii 14.08.2011, 19:07:59

Jak na moje to tu brakuje ciapków powinno być tak:

  1. $po['prod']=http://www.php.net/trim($po['prod']);

Napisany przez: jarmiar 14.08.2011, 20:39:40

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

Napisany przez: dr revuu 4.09.2011, 18: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 = http://www.php.net/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ć?

Napisany przez: markonix 5.09.2011, 12:12:26

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 = http://www.php.net/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: http://forum.php.pl/Jak_poprawnie_zadac_pytanie_t146215.html

Napisany przez: nospor 5.09.2011, 12:15:09

nie: pole=wartosc
a: pole='wartosc'
Czemu nie zaczynacie od podstaw tylko od razu skaczecie na środek jeziora?? Potopić się chcecie??

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)