Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z wyszukiwarką.
Forum PHP.pl > Forum > Przedszkole
NickOver
Siemka wink.gif!

Mam problem z wyszukiwarką od nospora. Mianowicie linijka:
  1. while($sql = mysql_fetch_array($sql))

wywala mi błąd:
Cytat
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\portal\search.php on line 49

Oto kod php:
  1. if(isset($_POST['ok']))
  2. {
  3. $wh = array(); //inicjalizujemy tablicę z warunkami
  4. $wh[] = "status = 2";
  5. if (!empty($_POST['name'])) //jeśli podano imię
  6. $wh[] = "imie = '$_POST[name]' ";
  7.  
  8. if (!empty($_POST['surname'])) //jeśli podano nazwisko
  9. $wh[] = "nazwisko = '$_POST[surname]' ";
  10.  
  11. if (!empty($_POST['age_from'])) //jeśli podano zakres dolny wieku
  12. $wh[] = "AGE >= $_POST[age_from]";
  13.  
  14. if (!empty($_POST['age_to'])) //jeśli podano zakres górny wieku
  15. $wh[] = "AGE <= $_POST[age_to]";
  16.  
  17. if (!empty($_POST['woj'])) //jeśli podano zakres górny wieku
  18. $wh[] = "woj = $_POST[woj]";
  19.  
  20. if (!empty($wh))
  21. $where = 'where '.implode(' and ', $wh);
  22. else
  23. $where = '';
  24.  
  25. //a teraz tworzymy nasze glowne zapytanie i łączymy je z naszymi warunkami
  26. $sql = 'select * from tabela '.$where;
  27. $sql = mysql_query("$sql");
  28. while($sql = mysql_fetch_array($sql))
  29. {
  30. echo ''.$sql["imie"].'';
  31. }


I od razu proszę o łopatologiczne wyjaśnienie mi o co chodzi z tym błędem. Znaczy rozumiem jego treść, ale nie wiem skąd się bierze, a dość często go widzę.

Od razu zaznaczam że wprowadzone dane pokrywają się z tymi w bazie, połączenie z bazą jest includowane.
nospor
Temat: Jak poprawnie zada pytanie
A zobaczysz bledy bazy i bedziesz wiedzial w czym problem
NickOver
Wywala mi:
Cytat
ZAPYTANIE:$sql = mysql_fetch_array($sql)BŁĄD:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$sql = mysql_fetch_array($sql)' at line 1

Lecz kompletnie nic mi to nie mówi ponieważ tej funkcji używami i działa bezproblemowo.
Turson
Przed
  1. $sql = mysql_query("$sql");

daj
  1. echo $sql;die();

i sprawdź czy zapytanie wygląda prawidłowo
mmmmmmm
Nazwy zmiennych ci się skończyły? Że każdą nazywasz $sql?
NickOver
Cytat(Turson @ 3.05.2014, 22:38:29 ) *
Przed
  1. $sql = mysql_query("$sql");

daj
  1. echo $sql;die();

i sprawdź czy zapytanie wygląda prawidłowo


Sprawdzałem to już wcześniej, bo to było pierwsze co przyszło mi do głowy. Zapytanie wygląda prawidłowo.

Cytat
Nazwy zmiennych ci się skończyły? Że każdą nazywasz $sql?

A po co zaśmiecać innymi zmiennymi skoro nie będę już potrzebował wartości z tych ze zmiennych? Na wszelki wypadek pozamieniałem, ale nic to nie dało.
nospor
Do KAZDEJ rzeczy ma być odzielna zmienna.

Problem na 100% byl spowodowany tym:
while($sql = mysql_fetch_array($sql))
Nadpisujesz $sql a potem robisz mysql_fetch_array na zlym $sql.
Powinno byc:
while($row = mysql_fetch_array($sql)){
echo $row["imie"];
}

Zas co do komunikatu bledu, to po jego tresci widze, że zle wstawiles kod z tematu ze wskazowkami..... Tam wszystko jest podane jak na dloni, a i tak 50% z Was zawsze coś sknoci przepisując :/
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.