Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> mysql error, mysql_num_rows()
krzyzak_p
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 10.10.2004

Ostrzeżenie: (0%)
-----


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??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Diwi
post
Post #2





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
pillot
post
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 9.05.2004
Skąd: Puszów

Ostrzeżenie: (0%)
-----


ja mam taki sam błąd gdy nie wyciąga żadnych wyników z bazy. dodaj też @ przed mysql_num_rows
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cudny
post
Post #5





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

Ostrzeżenie: (0%)
-----


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

Ten post edytował cudny 15.04.2005, 13:09:26


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
pillot
post
Post #6





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 9.05.2004
Skąd: Puszów

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Diwi
post
Post #7





Grupa: Zarejestrowani
Postów: 245
Pomógł: 4
Dołączył: 22.01.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
pillot
post
Post #8





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 9.05.2004
Skąd: Puszów

Ostrzeżenie: (0%)
-----


z tym die jest dobrze, mysql_num_rows zwraca 0
Go to the top of the page
+Quote Post
Ociu
post
Post #9





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  1. <?php
  2. $query = &#092;"SELECT id, login FROM users WHERE login='\".$u.\"' AND pass=PASSWORD('\".$p.\"')\";
  3. ?>
Go to the top of the page
+Quote Post
Imperior
post
Post #10





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.10.2004

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Com powiedział, powiedziałem.
Go to the top of the page
+Quote Post
Ociu
post
Post #11





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Z przyzwyczajenia... a jeśli są jakieś różnice w czasie, to napewno zaczne zmieniać swoje przyzwyczajenia.
Go to the top of the page
+Quote Post
krzyzak_p
post
Post #12





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 10.10.2004

Ostrzeżenie: (0%)
-----


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:/

Ten post edytował krzyzak_p 17.04.2005, 08:42:49
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 20:19