HomeArtikelDownloadsForum
PCFreunde.deForumEntwicklungPHP, MySQL & Co.
Besucher online: 978
Schnellsuche

Anzeigen

Community

Foren
PHP, MySQL & Co. Seite 1/2
mysql_num_rows() expects parameter 1 to be resource
AntwortenNeues ThemaZur akzeptierten AntwortZur Themenliste
Seiten:
1 2
Weiter
Nachricht
Hilfe!
Titel: mysql_num_rows() expects parameter 1 to be resource 17.09.2009 17:51
6.845 Punkte (?)
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
Hallo,

Ich werde teilweise gleich verrückt, ich habe von l3oops Seite
den Reg&Log Skript genommen und ihn bei mir eingebaut,
so nachdem ich kleine Probleme behoben habe, bleib ich
bei dem Problem stecken ich hab echt schon alles was mir spontan so
eingefallen ist versucht, aber echt nichts funktioniert.

Hier der Login Skript ( -Orginal- )
Zitat:
<?php
mysql_connect ('localhost', 'blalba', 'bla');
mysql_select_db('blabla');

if(isset($_POST['login']))
{
$username = $_POST['username'];
$passw = $_POST['password'];
$md5 = md5($passw);
$query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username'
and $password = '$md5'");
$anzahl = mysql_num_rows($query);

//Nur zur Fehlersuche-
echo mysql_errno() . ": " . mysql_error() . "\n";
//--
if (anzahl == 1)
{
$row = mysql_fetch_object($query);
$_SESSION['loggedin'] = true;
$_SESSION['userID'] = $row->user_id;
echo "Du wurdest erfolgreich eingeloggt.";
}
}

?>

So, sieht er nach dem entmöbeln meiner Versuche aus,
trotzdem bleibt Fehler vorhanden undzwar:

Zitat:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/--/www/Index/login.php on line 12
1064: 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 '= '029a8fasdd21362adasdd32627b4fasd6'' at line 2


Danke schonmal im Vorraus!
Liebe Grüße Hilfe!

[Zuletzt bearbeitet: 17.09.2009 17:53]

________________________________________
Weisheit ist die Kunst, so zu leben, dass
das, was man sich vornimmt, auch gelingt.
Private Nachricht senden  
 
L3oop
Titel: mysql_num_rows() expects parameter 1 to be resource 17.09.2009 17:57
Moderator
45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
Experte
Hallo,

das war ein Fehler von mir, ändere den untersten Code in das um:

Zitat:
<?php
mysql_connect ('localhost', 'blalba', 'bla');
mysql_select_db('blabla');

if(isset($_POST['login']))
{
$username = $_POST['username'];
$passw = $_POST['password'];
$md5 = md5($passw);
$query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username'
and `password` = '$md5'");
$anzahl = mysql_num_rows($query);

//Nur zur Fehlersuche-
echo mysql_errno() . ": " . mysql_error() . "\n";
//--
if (anzahl == 1)
{
$row = mysql_fetch_object($query);
$_SESSION['loggedin'] = true;
$_SESSION['userID'] = $row->user_id;
echo "Du wurdest erfolgreich eingeloggt.";
}
}

?>


Entschuldige nochmal, ich werde es gleich ausbessern :oops:

Gruß L3oop

[Zuletzt bearbeitet: 17.09.2009 17:57]

________________________________________
StereomixBootreihenfolge ändernPC beschleunigen
Private Nachricht senden  
 
Hilfe!
Titel: mysql_num_rows() expects parameter 1 to be resource 17.09.2009 19:08
6.845 Punkte (?)
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
Leider gleiche Meldung:

Zitat:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/--/www/Index/login.php on line 12


Wenn du gerade ausbesserst kannst du hier auch deinen
kleinen Fehler beim Registrierungs Formular ausbessern undzwar:

Zitat:
if(strlen($username) < 2 or strlen($username) > 20 or strlen($password) < 4 or strlen($password) > 40 or $password != $password2)


Bei dir siehts nämlich so aus:
Zitat:
if(strlen($username) < 2 or strlen($username) > 20 or strlen($password) < 4 or strlen($password) < 40 or $password != $password2)


Sonst muss ja das Passwort über 40 Zeichen haben.

________________________________________
Weisheit ist die Kunst, so zu leben, dass
das, was man sich vornimmt, auch gelingt.
Private Nachricht senden  
 
L3oop
Titel: mysql_num_rows() expects parameter 1 to be resource 17.09.2009 19:18
Moderator
45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
Experte
Was wird für eine MySQL-Fehlermeldung ausgegeben?

________________________________________
StereomixBootreihenfolge ändernPC beschleunigen
Private Nachricht senden  
 
Hilfe!
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 15:38
6.845 Punkte (?)
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
Das hier:

Zitat:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/--/www/Index/login.php on line 12
1054: Unknown column 'password' in 'where clause'


[Zuletzt bearbeitet: 18.09.2009 15:39]

________________________________________
Weisheit ist die Kunst, so zu leben, dass
das, was man sich vornimmt, auch gelingt.
Private Nachricht senden  
 
L3oop
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 15:42
Moderator
45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
Experte
Schau mal in der Datenbank nach, ob es in der Tabelle users die Spalte "password" gibt.

________________________________________
StereomixBootreihenfolge ändernPC beschleunigen
Private Nachricht senden  
 
Hilfe!
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 16:01
6.845 Punkte (?)
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
Ok, hab gerade die Tabelle erstellt und den Registrierungs
Code angepasst. Jetzt werden zwar die Reg-Daten in die
Tabelle eingetragen aber beim Password also in der Tabelle
erscheint der Zensier Code anstelle des echten Passworts.

Und beim login, komm ich dann auch nicht rein, hat das
was mit der zensierung zutuhen?

Reg-Code:
Zitat:
<?php
mysql_connect("localhost", "bla", "blubelbla");
mysql_select_db("bla");

if(isset($_POST['register']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$anz = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `username` = '$username'"),0);
if(strlen($username) < 2 or strlen($username) > 20 or strlen($password) < 4 or strlen($password) > 40 or $password != $password2)
{

echo "<b>Bitte überprüfe die Eingaben nochmals.
Die Passwörter müssen übereinstimmen und die Angaben
dürfen nicht zu kurz/lang sein.</b><br />"; }
elseif($anz != 0) echo '<b>Leider gibt es diesen Benutzernamen bereits. Bitte gib einen anderen Namen ein.</b>';
else
{
$date = date("Y-m-d");
echo "<b>Du wurdest erfolgreich registriert.
Du kannst dich nun <a href=\"login.php\">einloggen.</a></b><br />";
$error = false;
$password = md5($password);
mysql_query("INSERT into `users` (username, password)
VALUES ('$username', '$password')");
}
}
?>


Edit: ne liegt nicht dran habs kurz ohne versucht.

[Zuletzt bearbeitet: 18.09.2009 16:03]

________________________________________
Weisheit ist die Kunst, so zu leben, dass
das, was man sich vornimmt, auch gelingt.
Private Nachricht senden  
 
L3oop
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 16:08
Moderator
45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
Experte
Akzeptierte Antwort
(+50 Punkte)
Bin ich doof :? Ersetze das

mysql_query("INSERT into `users` (username, password)
VALUES ('$username', '$password')");

durch das

mysql_query("INSERT into `users` (username, password)
VALUES ('".mysql_real_escape_string($username)."', '".md5($password)."')");

________________________________________
StereomixBootreihenfolge ändernPC beschleunigen
Private Nachricht senden  
 
Hilfe!
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 16:28
6.845 Punkte (?)
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
Hm...

Als ichs gemacht hab gleiche Fehler Meldung, konnt mich
also trotzdem nicht einloggen, eig. logisch da die verbesserung
fürs Reg-Formular gillt.

Aber als mir beim Login-Script eingefallen ist das
ich das loggedin vergessen hatte hab ichs rasch in eine
scripts.inc gepackt nun wenn ichs probier kommt das:

Zitat:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /users/--/www/Index/Registrieren.php:62) in /users/--/www/Index/scripts.inc on line 10

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/--/www/Index/Registrieren.php:62) in /users/--/www/Index/scripts.inc on line 10


Login Script:
Zitat:
<?php
include("scripts.inc");
if(isset($_POST['login']))
{
$username = $_POST['username'];
$passw = $_POST['password'];
$md5 = md5($passw);
$query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username' and `password` = '$md5'");
$anzahl = mysql_num_rows($query);
if (anzahl == 1)
{
$row = mysql_fetch_object($query);
$_SESSION['loggedin'] = true;
$_SESSION['userID'] = $row->user_id;
echo "Du wurdest erfolgreich eingeloggt.";
}
else
{
echo "Passwort oder Benutzername Falsch!";
}
}

?>

Reg-Code:
Zitat:
<?php
include("scripts.inc");
if(isset($_POST['register']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$anz = mysql_result(mysql_query("SELECT COUNT(*) FROM `users` WHERE `username` = '$username'"),0);
if(strlen($username) < 2 or strlen($username) > 20 or strlen($password) < 4 or strlen($password) > 40 or $password != $password2)
{

echo "<b>Bitte überprüfe die Eingaben nochmals.
Die Passwörter müssen übereinstimmen und die Angaben
dürfen nicht zu kurz/lang sein.</b><br />"; }
elseif($anz != 0) echo '<b>Leider gibt es diesen Benutzernamen bereits. Bitte gib einen anderen Namen ein.</b>';
else
{
echo "<b>Du wurdest erfolgreich registriert.
Du kannst dich nun <a href=\"login.php\">einloggen.</a></b><br />";
$error = false;
$password = md5($password);
mysql_query("INSERT into `users` (username, password)
VALUES ('".mysql_real_escape_string($username)."', '".md5($password)."')"); }
}
?>


scripts.inc:
Zitat:
<?php

mysql_connect ('localhost', 'asda', 'asdasd');
mysql_select_db('asd');


?>
<?php

if(isset($_SESSION['loggedin']))
{
$uid = $_SESSION['userID'];
$user_query = mysql_query("SELECT * FROM `users`
WHERE `user_id` = '$uid'");
$user = mysql_fetch_object($user_query);
if($user->mod == 1) $mod = true;
}

?>


//Extra ohne session...

________________________________________
Weisheit ist die Kunst, so zu leben, dass
das, was man sich vornimmt, auch gelingt.
Private Nachricht senden  
 
L3oop
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 17:10
Moderator
45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
Experte
Das session_start() muss ganz oben stehen, bevor irgendwas ausgegeben wird. Gleich in die erste Zeile, wenn auch nur ein Leerzeichen davor kommt, geht es nicht.

________________________________________
StereomixBootreihenfolge ändernPC beschleunigen
Private Nachricht senden  
 
Hilfe!
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 17:52
6.845 Punkte (?)
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
Geht leider nicht wirklich wenn ich es in der Schleife
als erstes schreibe also so:
Zitat:
<?php
mysql_connect ('localhost', 'as', 'asd');
mysql_select_db('asd');
if(isset($_SESSION['loggedin']))
{
session_start();
$uid = $_SESSION['userID'];
$user_query = mysql_query("SELECT * FROM `users`
WHERE `user_id` = '$uid'");
$user = mysql_fetch_object($user_query);
if($user->mod == 1) $mod = true;
}

?>


Kommt keine Fehler meldung mehr.
EDIT: Ansonsten doch.
Aber helfen tuts in sache einloggen leider nicht.

[Zuletzt bearbeitet: 18.09.2009 17:55]

________________________________________
Weisheit ist die Kunst, so zu leben, dass
das, was man sich vornimmt, auch gelingt.
Private Nachricht senden  
 
L3oop
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 18:18
Moderator
45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
Experte
Stelle das session_start() ganz an den Anfang, außerhalb des IF-Blocks. Du kannst ja nicht prüfen, ob eine Session-Variable existiert, und nur dann die Session starten :lol: :wink:

________________________________________
StereomixBootreihenfolge ändernPC beschleunigen
Private Nachricht senden  
 
Hilfe!
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 18:21
6.845 Punkte (?)
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
Zitat:
Stelle das session_start() ganz an den Anfang, außerhalb des IF-Blocks. Du kannst ja nicht prüfen, ob eine Session-Variable existiert, und nur dann die Session starten :lol: :wink:


Entweder bin ich zu doof oder es funktioniert einfach nicht
das tuhe ich aber die Fehlermeldung bleibt vorhanden kannst
du bitte zeigen wie du das meinst?
Ich bin mir eig. schon sicher das ich dich richtig
verstanden hab aber funzen tut es nicht. :? :mrgreen:

[Zuletzt bearbeitet: 18.09.2009 18:22]

________________________________________
Weisheit ist die Kunst, so zu leben, dass
das, was man sich vornimmt, auch gelingt.
Private Nachricht senden  
 
L3oop
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 19:12
Moderator
45.021 Punkte (?)
Anmeldungsdatum: 25.04.2008
Beiträge: 9.399
Experte
Was genau funktioniert jetzt nicht?

Immer noch dieses "Cannot send..."? Da musst du dein Script durchdenken. Steht in jeder Datei <?php am Anfang? Also wirklich ganz am Anfang, da darf kein einziger Zeilenumbruch oder Leerzeichen vorher kommen.

[Zuletzt bearbeitet: 18.09.2009 19:14]

________________________________________
StereomixBootreihenfolge ändernPC beschleunigen
Private Nachricht senden  
 
Hilfe!
Titel: mysql_num_rows() expects parameter 1 to be resource 18.09.2009 19:15
6.845 Punkte (?)
Anmeldungsdatum: 15.08.2007
Beiträge: 2.443
Ich glaube nur der Login-Skript funktioniert nicht.
Beim Registrieren werden alle Daten in die Datenbank
eingeschrieben. Beim Passwort ist dann die verschlüsslung in
der Tabelle zu sehen.

Beim Login, kommt dann halt anstatt "erflogreich eingeloggt als blabla"
die else klammer in schwung und sagt "passwort oder blabla.."
Also muss irgendwie was mit der if schleife sein
Zitat:
if (anzahl == 1)
{
$row = mysql_fetch_object($query);
$_SESSION['loggedin'] = true;
$_SESSION['userID'] = $row->user_id;
echo "Du wurdest erfolgreich eingeloggt.";
}


Ich glaube das einfach anzahl eben nicht dem Wert 1 entspricht
und die Schleife dadurch nicht gelesen wird.
Nun ist die Frage wie setzt ich anzahl auf 1?

________________________________________
Weisheit ist die Kunst, so zu leben, dass
das, was man sich vornimmt, auch gelingt.
Private Nachricht senden  
 
AntwortenNeues ThemaZur akzeptierten AntwortZur Themenliste
Seiten:
1 2
Weiter
Community Login
eMail:
Passwort:
Auto-Login