da jeg ændrede koden til ovenstående modtog jeg følgende fejlmeddeleser.
$sql Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/ideabank/checklogin.php on line 35 Call Stack: 0.0002 657184 1. {main}() /var/www/ideabank/checklogin.php:0 0.0006 660584 2. mysql_num_rows() /var/www/ideabank/checklogin.php:35 NULL
Og line 35 er min if($count==1)
"Har du prøvet at udskrive din $sql og smide den ind i phpmyadmin eller lign.?"
-Det er jeg ikke sikker på hvad du mener med....
UPDATE:
Har du prøvet at udskrive din $sql og smide den ind i phpmyadmin eller lign.?
Sidder lige nu på mysql's hjemmeside og researcher temporary tables, er det dét du mente?
UPDATE:
Jeg har testet denne query mod databasen
- SELECT * From members
resultatet er, Showing rows 0 - 5 (6 total, Query took 0.0004 sec)
Ok, så jeg har gjort min query endnu mere simpel ved at fjerne min variabel som holder table navnet og skrevet det direkte i min query.
$sql = "SELECT * FROM members WHERE password = '$password'";
resultat:
$sqlint(2)
det er rigtigt nok idet der er to kontoer med det samme kodeord.
Så ændrede jeg min query til:
$sql = "SELECT * FROM members WHERE username = '$username'";
Det ville give mening da username skal være unikt.
resultat:
$sql Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /var/www/ideabank/checklogin.php on line 35 Call Stack: 0.0002 653256 1. {main}() /var/www/ideabank/checklogin.php:0 0.0007 656528 2. mysql_num_rows() /var/www/ideabank/checklogin.php:35 NULL
UPDATE:
Jeg vil gerne sende KARMA ud til de to herre som har hjulpet mig videre med mit projekt. Selvom jeg ikke er kommet til en løsning endnu. Jeg har fået lidt mere indsigt i mit problem...
som sql warning siger, der er en bubu på linie 35, return NULL!
Linien som skabte fejlen var min counter, som egenligt var en sikkerheds foranstaltning for at undgå at der bliver skrevet flere bruger ud på én gang.
min originale ide var:
if result match $username & $password then row must be == to 1
Men når den spøger om et resultat som er ==1 eller brugt på en anden måde != eller >1
Så kan SQL ikke hitte ud af hvad der sker, f.eks da jeg brugte query
$sql = "SELECT * FROM members WHERE password = '$password'";
Så gav den en forkert værdi.
Nu har jeg prøvet at skrotte counteren og i stedet for, validere querien på en anden måde
- if (
- mysql_num_rows($result))
- {
- session_start();
- ...
-
- eller
-
- if (
- mysql_num_rows($result) == 1)
- {
- session_start();
- ...
Som så kaster den samme fejl efter mig
Indlæg senest redigeret d. 28.07.2011 18:20 af Bruger #16715