Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL][PHP] argument is not a valid MySQL result
Forum PHP.pl > Forum > Przedszkole
-Bart-
Witam serdecznie. Pisze tu po raz pierwszy bo praktycznie kończę już stronkę, a niestety utknąłem w jednym miejscu. Kompletnie nie rozumiem w czym jest problem. Postaram się jasno opisać o co chodzi:

Mam 2 tabele - um (od umiejetnosci) i umd (umiejetnosci dodatkowe)

W tabeli um mam pola idu i um

W tabeli umd: id1 (jako klucz podstawowy) idu1 (pole o wartości idu z pierwszej tabeli) i dod (dodatkowe)

Teraz chcę wykonać zapytanie:

$sql=("SELECT um.idu, um.um, umd.idu1, umd.dod FROM um , umd WHERE um.idu=umd.idu1");

i wszystko wydaje się prawidłowe, zwłaszcza, że kiedy wpisuję takie zapytanie w Vertrigo Serv czyli na moim wirtualnym serwerze - wszystko gra i wyświetla się prawidłowo. Problem pojawia się dopiero na stronie. Poniżej zapytania mam coś takiego:

while ($query_row=mysql_fetch_assoc($sql)) {


$idu1=$query_row['idu1'];


echo $idu1;
}

Mniejsza z tym, co chcę wyświetlić, bo będzie tam zupełnie inne pole, ale serwer wyrzuca mi coś takiego:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource i że niby w linii 136 czyli w tej w której mam while

Ktoś z Was rozumie o co tutaj chodzi? Bardzo proszę o jakąś podpowiedź, bo ja nie mam pojęcia. Pozdrawiam.
Michael2318
A gdzie wykonywanie zapytania do bazy (mysql_query($sql)) ...?

Zrób tak:

  1. $sql= "SELECT um.idu, um.um, umd.idu1, umd.dod FROM um , umd WHERE um.idu=umd.idu1";
  2. if ( !($result = mysql_query($sql)) )
  3. {
  4. die('error in sql<br>'.mysql_error());
  5. }
  6. while($query_row = mysql_fetch_assoc($result) )
  7. {
  8. $idu1=$query_row['idu1'];
  9.  
  10. echo $idu1;
  11. }
-Bart-
Teraz wygląda to tak i co prawda nie wyświetla błędu, ale też nie wyświetla rekordu dodatkowe z tabeli um. Tabela nie jest pusta i wszystkie pola się zgadzają. Soprawdzałem kilka razy. A tak poza tym dziękuję za odpowiedźwink.gif Nie liczyłem na tak szybką szczerze mówiąc.

if ($page==6)
{ echo '<h3>Umiejętno¶ci</h3><center>';

$sql= "SELECT um.idu, um.um, umd.idu1, umd.dod FROM um , umd WHERE um.idu=umd.idu1";
if ( !($result = mysql_query($sql)) )
{
die('error in sql'.mysql_error());
}
while($row = mysql_fetch_assoc($result) )
{
$umiejetnosc=$query_row['um'];


echo $umiejetnosc;


}}
echo "<br>";
-Bart-
Rozpędziłem się - chodzi oczywiście o rekord um z tabeli um . Sorki
Michael2318
dorzuć po wszystkim:

Zliczy ile rekordów zostało znalezionych poprzez wykonane wyżej zapytanie. Jesli zwróci 0 to wiadomo, że w bazie nie ma wyników odpowiadających temu zapytaniu albo zapytanie jest źle poskładane.
-Bart-
Wyliczyło 21 czyli tablica faktycznie pusta nie jest. Że tak powiem - bądź człowieku mądry i pisz wiersze;) Pierwszy raz mam coś takiego.
-Bart-
To brzmi tak absurdalnie, ja wiem.

Ale niczego nie mylę. W tabeli o nazwie um mam pole o nazwie um i o nazwie idu (porządkowa klucz podstaowy)

W tabeli o nazwie umd mam pola o nazwie id1 - porządkowa klucz podstawowy, idu1 = idu z pierwszej tabeli, i dod czyli informacje dodatkowe.

Znam to już na pamięć, bo kombinuje od wczoraj;)
Michael2318
Cytat
while($row = mysql_fetch_assoc($result) )
{
$umiejetnosc=$query_row['um'];


myslę, że nie musze tlumaczyc smile.gif
-Bart-
Mam jakiś błąd w tej linijce? Jestem samoukiem więc jeszcze tak do końca wszystkiego nie wiem. Ale do tej pory trochę już zrobiłem i zawsze działało.
-Bart-
Wstyd i żenada. Aż się spaliłem. Już widzę i działa;) Wielkie dzięki:)
Michael2318
serio nie widzisz tego, że w pierwszej linijce nazwałeś zmienną '$row' a potem odwołujesz się do zmiennej $query_row? ;/ Wypadałoby się zdecydować na jedną nazwę.
-Bart-
No tak tak już wiem;) Od tych kodów dostaję już oczopląsu i w pierwszej chwili nie zauważyłem:) Swoją drogą widzę, że warto tu pytać. Jest krótko, zwięźle i na temat;)
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.