Xampp Lite Mysql/PHP

Alles, was PHP betrifft, kann hier besprochen werden.

Xampp Lite Mysql/PHP

Postby smyle » 22. March 2010 11:18

Hallo,
Ich habe die neue Version von Xampp Lite heruntergeladen (XAMPP Lite 1.7.3). vorher hatte ich das normeale Xampp (Ich glaube es heisst BASIC).
Jedenfalls bekomme ich beim neuen Xampp folgende Fehlermeldung auf meiner Homepage:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Programme\xampp\htdocs\Ordnername\Ordner\Login\function.inc.php on line 27

Der Code dazu lautet:
Code: Select all
 $sql="SELECT `ID` FROM `benutzer` WHERE `Session`='".session_id()."' LIMIT 1";
 $result=mysql_query($sql);
 return(mysql_num_rows($result)==1);


"Line 27" ist "return(mysql_num_rows($result)==1);"

An was ligt das? wie kann ich das umgehen. Wenn das nicht funktioniert, dann funktioniert auch mein Login nicht. ist das ein Problem von der neuen Xampp Lite Version oder kann das Xampp Lite allgemein nicht?

Grüsse
Smyle
smyle
 
Posts: 11
Joined: 22. March 2010 11:08

Re: Xampp Lite Mysql/PHP

Postby Nobbie » 22. March 2010 12:01

smyle wrote:An was ligt das?


Das liegt daran, dass es extrem schlecht programmiert ist. Nach dem Aufruf von mysql_query() wird einfach davon ausgegangen, dass das "schon mal gut gehen wird". Es gibt aber auch die Möglichkeit, dass eine Abfrage nicht so wie erwünscht ein Ergebnis liefert und einen Fehler liefert. Diese Möglichkeit wird im Code überhaupt nicht beachtet und ist die Ursache für die (Folge-)Fehlermeldung.

Da gehört eine vernünftige Abfrage hin, ob $result nicht den Wert FALSE hat (das ist nämlich der Fehlerfall) und wenn doch, kann man nicht einfach den return so machen, sondern gibt eine Fehlermeldung aus (mit Hilfe von mysql_error()) und gibt im return dann natürlich auch einen anderen Wert an (weil der Aufruf von mysql_num_rows() dann sinnlos ist).
Nobbie
 
Posts: 7134
Joined: 09. March 2008 13:04

Re: Xampp Lite Mysql/PHP

Postby smyle » 22. March 2010 13:27

OK. aber alle Befehle die bei mir mit mysql.... beginnen funktionieren nicht.
und beim Xampp basic haben alle so funktioniert.
smyle
 
Posts: 11
Joined: 22. March 2010 11:08

Re: Xampp Lite Mysql/PHP

Postby Nobbie » 22. March 2010 13:39

Dann ist wohl das mysql Modul nicht geladen.

Wobei: das ist doch Schwachsinn. Natürlich "funktioniert" der Aufruf, sonst würdest Du ganz andere Fehlermeldungen bekommen. Baue mal das Script so um und Du wirst die Ursache genannt bekommen.
Nobbie
 
Posts: 7134
Joined: 09. March 2008 13:04

Re: Xampp Lite Mysql/PHP

Postby smyle » 22. March 2010 14:05

also, ich muss gestehen, das ich keine Ahnung von PHP habe.
Diesen Inhalt habe ich nämlich aus einem Tutorial http://www.php-resource.de/tutorial,38,Login-mit-Hilfe-von-PHP-und-mySQL.htm

Wenn ich das jedoch richtig gemacht habe, dann ist die Fehlermeldung von mysql_error() die selbe wie schon vorher.
Wenn ich jedoch die Zeile mit return(mysql_num_rows($result)==1); auskommentiere dann kommt keine Meldung.

Ich bin davon überzeugt das es stimmt, denn ich hatte diese Homepage schon vorher und zwar mit der Xampp Basic version. Als ich die Lite Version installiert habe, habe ich die Dateien und die Datenbank, eins zu eins übernommen.
Deswegen würde ich sagen, es nicht am Code liegt. aber eben.. da ich nicht viel über PHP weis kann ich mir nicht 100% sicher sein. :(

Wo kann ich nachschauen ob das mysql Modul geladen oder eben nicht geladen ist?
smyle
 
Posts: 11
Joined: 22. March 2010 11:08

Re: Xampp Lite Mysql/PHP

Postby Nobbie » 22. March 2010 14:23

smyle wrote:also, ich muss gestehen, das ich keine Ahnung von PHP habe.


Das ist schlecht.


smyle wrote:Wenn ich das jedoch richtig gemacht habe, dann ist die Fehlermeldung von mysql_error() die selbe wie schon vorher.


Wenn Du was richtig gemacht hast? Wie ist denn die Meldung von mysql_error()?

smyle wrote:Wenn ich jedoch die Zeile mit return(mysql_num_rows($result)==1); auskommentiere dann kommt keine Meldung.


Das ist logisch. Da kannst Du auch gleich das ganze Script auskommentieren, dann kommt auch keine Meldung. Er hilft nur nichts, die Zeilen auszukommentieren.

smyle wrote:Ich bin davon überzeugt das es stimmt,


Wovon bist Du überzeugt, dass es stimmt?

smyle wrote:Als ich die Lite Version installiert habe, habe ich die Dateien und die Datenbank, eins zu eins übernommen.


Aber irgendetwas stimmt da nicht und deswegen bekommst Du jetzt diese Fehlermeldung. Und zwar stimmt mit der Datenbank irgendetwas nicht - aber um das besser beurteilen zu können, brauche ich unbedingt die Meldung von mysql_error().

smyle wrote:Deswegen würde ich sagen, es nicht am Code liegt. aber eben.. da ich nicht viel über PHP weis kann ich mir nicht 100% sicher sein. :(


Die Ursache liegt nicht am PHP Code, es stimmt etwas mit der Datenbank nicht. Aber dennoch ist der PHP Code unsauber, weil er einen Fehler der Datenbank nicht berücksichtigt (wenn kein Datenbankfehler auftritt, ist das ja auch egal). Jetzt tritt aber ein Fehler auf und deswegen erscheint diese komische Fehlermeldung, die nicht weiterhilft. Wir brauchen die Meldung von mysql_error().


smyle wrote:Wo kann ich nachschauen ob das mysql Modul geladen oder eben nicht geladen ist?


Das kannst Du mit phpinfo() nachschauen, aber die Mühe kannst Du Dir sparen. Wenn es nicht geladen wäre, dann wäre das Script schon beim mysql_connect() gestorben mit FATAL ERROR.

P.S.: Um das ganze mal zu beschleunigen, ersetze mal die drei Zeilen von oben durch diese Zeilen (copy&paste):

Code: Select all
$sql="SELECT `ID` FROM `benutzer` WHERE `Session`='".session_id()."' LIMIT 1";
$result=mysql_query($sql);
if (!$result) die($sql.': '.mysql_error());
return(mysql_num_rows($result)==1);


Und dann erzähle uns mal, welche Meldung Du angezeigt bekommst.
Nobbie
 
Posts: 7134
Joined: 09. March 2008 13:04

Re: Xampp Lite Mysql/PHP

Postby smyle » 22. March 2010 14:35

:S Sorry wollte dich nicht aufregen, aber ich muss sagen... :D ich habe die Datenbank komplet gelöscht und neu importiert. nun ist die mysql Fehlermeldung weg.
Das Login funktioniert jedoch leider immernoch nicht.
ich werde mal weiter schauen, vielleicht finde ich den Fehler noch. Am sonsten werde ich mich wieder melden.
Danke
smyle
 
Posts: 11
Joined: 22. March 2010 11:08

Re: Xampp Lite Mysql/PHP

Postby Nobbie » 22. March 2010 21:03

smyle wrote::S Sorry wollte dich nicht aufregen, aber ich muss sagen... :D ich habe die Datenbank komplet gelöscht und neu importiert. nun ist die mysql Fehlermeldung weg.


Kein Problem, Du machst halt nicht, was man Dir sagt, ist natürlich Deine Entscheidung.

smyle wrote:Das Login funktioniert jedoch leider immernoch nicht.
ich werde mal weiter schauen, vielleicht finde ich den Fehler noch. Am sonsten werde ich mich wieder melden.


Vielleicht versucht Dir ja trotzdem jemand zu helfen - ich nicht, da Du ja nicht tust, was man Dir rät. Aber das kriegst Du dann sicher auch so hin.
Nobbie
 
Posts: 7134
Joined: 09. March 2008 13:04


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests