Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mysql error
Forum PHP.pl > Forum > PHP
krzyzak_p
mam w kodzie cos takeigo:
  1. <?php
  2. $query = &#092;"SELECT id, login FROM users WHERE login='$u' AND pass=PASSWORD('$p')\";
  3. $result = @mysql_query ($query);
  4.  
  5. if(mysql_num_rows($result))
  6. ?>
i dalej warunek jaki ma wykonac, a wyrzuca mi blad:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\hepi\admin\index.php on line 31
te linie podalem powyzej, linia 31 to ta z petla... czem,u wyrzuca mi taki blad??
Diwi
Błąd w zapytaniu SQL wałkowane 100 000 razy exclamation.gif

zrób tak
  1. <?php
  2. $result = mysql_query($query) OR DIE (mysql_error());
  3. ?>


I pokaż jaki błąd ci wyświetla winksmiley.jpg

Pozdrawiam
pillot
ja mam taki sam błąd gdy nie wyciąga żadnych wyników z bazy. dodaj też @ przed mysql_num_rows
nospor
pillot: mysql_num_rows zwraca liczbę rekordów wyciągniętych z bazy. Jeśli nic nie wyciągnął, to zwraca 0 anie komunikat o błędzie. Komunikat o błędzie zwraca, gdy zapytanie było złe w wyniku czego $result=false
cudny
Troszki odbije od tematu ale jak domniemam smile.gif ten skrypt ma za zadanie wyroznic user'a i sprawdzic czy haselko sie zgadza.

Proponuje zmienic kod exclamation.gif!
Bardzo latwo jest obejsc takie zapytanie, sam zobacz:

Niech ktos wpisze w polu login taki ciag znakow: ' or login like '%' or login='
A w polu haslo ciag znakow: ' or pass like '%' or pass='

Wtedy skrypt wyglada tak smile.gif :

  1. <?php
  2. $query = &#092;"SELECT id, login FROM users WHERE login='' or login like '%' or login='' AND pass='' or pass like '%' or pass=''\";
  3. $result = @mysql_query ($query);
  4. ?>


No i jestem zalogowany jako ADMIN biggrin.gif

Pomysl o innym rozwiazaniu

pzdr
cudny
pillot
Cytat(nospor @ 2005-04-15 09:28:45)
pillot: mysql_num_rows zwraca liczbę rekordów wyciągniętych z bazy. Jeśli nic nie wyciągnął, to zwraca 0 anie komunikat o błędzie. Komunikat o błędzie zwraca, gdy zapytanie było złe w wyniku czego $result=false

hmm to czemu u mnie zawsze ładowało Warning gdy zapytanie zwracało 0? dokładnie tak, jak w zagadnieniu tematu?
Diwi
a to zrób takie zapytanie:

  1. <?php
  2. $pytanie = mysql_query(&#092;"zapytanie które zwraca 0 rekordów\") OR DIE ('Błąd SQL'.mysql_error());
  3.  
  4. mysql_num_rows($pytanie) OR DIE ('Błąd przy pobieraniu ilości rekordów: '.mysql_error());
  5. ?>


I pokaż co ci takie zapytanie wyświetli
pillot
z tym die jest dobrze, mysql_num_rows zwraca 0
Ociu
  1. <?php
  2. $query = &#092;"SELECT id, login FROM users WHERE login='\".$u.\"' AND pass=PASSWORD('\".$p.\"')\";
  3. ?>
Imperior
Cytat(Ociu @ 2005-04-15 17:18:00)
  1. <?php
  2. $query = &#092;"SELECT id, login FROM users WHERE login='\".$u.\"' AND pass=PASSWORD('\".$p.\"')\";  
  3. ?>

A to po co? To może już:
  1. <?php
  2.  
  3. $query = 'SELECT id, login FROM users WHERE login=''.$u.'' AND pass=PASSWORD(''.$p.'')';  
  4.  
  5. ?>


Ale ja i tak robie przez statementy:
  1. <?php
  2.  
  3. $oStmt = $CORE->Service('SQL')->Default->Prepare('SELECT id, login FROM users WHERE login=? AND pass=PASSWORD(?)');
  4. $oStmt->BindStr($sLogin;
  5. $oStmt->BindStr($sPass);
  6. if ($oStmt->Execute()) ....
  7.  
  8. ?>
Ociu
Z przyzwyczajenia... a jeśli są jakieś różnice w czasie, to napewno zaczne zmieniać swoje przyzwyczajenia.
krzyzak_p
jak zorbilem to wyrzucilo blad ze bazy nie moze wybrac, bo zla nazwe wklepalem, teraz juz nic nie wyswietla, tylko wykonuje ta petle else:
  1. <?php
  2.  
  3. if(mysql_num_rows($result)>0) { // W bazie znaleziono szukane dane.
  4.                 
  5.                 // Rozpoczęcie sesji, zarejestrowanie wartości i przekierowanie.
  6.                 $_SESSION['login'] = $row['login'];
  7.                 $_SESSION['id'] = $row['id'];
  8.             
  9.                 ob_end_clean(); // Usunięcie bufora.
  10.                 
  11.                 header (&#092;"Location:  http://\" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . \"/index.php\");
  12.                 exit();
  13.                 
  14.         } else { // W bazie nie znaleziono szukanych danych.
  15.             echo '<p><font color=\"red\" size=\"+1\">Hasla nie pasuja do siebie.</font></p>'; 
  16.         }
  17.  
  18. ?>





EDIT:
jzu wiem w czym jest problem.. zmienilem kodowanie na MD5 i php mni wariuje:] po prostu odwala dsziwne rzeczy... zrobielm skrypt na wlasy uzytek, zeby wpisane haslo mi dawal zakodowane w MD5 i wyspuje takowe:
Kod
398b6836526b30e2f63cf971033b8c4d
a jak sie loguje (dalem zeby mi pokazywal jakie haslo tworzy) to wysypuje takowe:
Kod
2a039ed8fdbf4ceaa9e79cdc3aecd1a2
i nie ma co sie dziwic ze nie pasuja.. wie ktos moze dlaczego php robi sobie takie jaja?questionmark.gif? a po wrzuceniu do bazy tego haselka co mi utworzyl skrpt od logowania wyrzuca nadal ze zle haslo:P no nie rozumiem jak to ma dzialac.. poorownalem hasla i oba sa identyznie, ale komp uwaza inaczej:/
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.