Philipp: MySQL Problem (mysql_num_rows)

HI!

Bei volgendem Quelltext:

$mysql_select="SELECT * FROM $tabelle WHERE login=$log AND paswort=$pass";
$result=mysql_query($mysql_select);
$menge=mysql_num_rows(result);

zeigt er immer volgenden Fehler an:

WARNING: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:...xxx\xxx.php on line xxx

Es liegt doch wahrscheinlich an dem mysql_num_rows und dem WHERE in dem mysql_select denn ohne WHERE funktioniert die scheiße!

Vielen Dank für die Hilfe

  1. Hallo Philipp,

    $mysql_select="SELECT * FROM $tabelle WHERE login=$log AND paswort=$pass";

    was steht in $log und in $pass drin? stehen dort nur Zahlen drin? wenn nicht sollte noch ein Satz Anführungszeichen um die Variablen:
    ... WHERE '".$log."' AND ...
    ich hoff doch, dass du (wenn $log und $pass) vom Benutzer kommen schon entsprechend entschärft hast (hier mit mysql_escape_string()) - außerdem, brauchst du wirklich _alle_ Spalten? Frag besser nur die ab, die du auch wirklich brauchst: http://dclp-faq.de/q/q-sql-select.html.

    $result=mysql_query($mysql_select);
    $menge=mysql_num_rows(result);

    wo ist die Konstante result definiert, und was steht in selbiger? ich nehme doch mal an, du meinst $result, oder?

    WARNING: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:...xxx\xxx.php on line xxx

    in einem solchen Fall ist es immer ratsam mysql_error() zu befragen - die Fehlermeldungen vom mysql sind aussagekräftiger.

    Es liegt doch wahrscheinlich an dem mysql_num_rows und dem WHERE in dem mysql_select denn ohne WHERE funktioniert

    nein mysql_num_rows() ist unschuldig :-) die fehlenden Anführungszeichen sind IMO schuld.

    die scheiße!

    *pfui* stelle er sich in die Ecke und schäme sich für diese unflätigen Ausdrucksweise.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  2. Hallo Philipp!

    $mysql_select="SELECT * FROM $tabelle WHERE login=$log AND paswort=$pass";
    $result=mysql_query($mysql_select);
    $menge=mysql_num_rows(result);

    WARNING: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:...xxx\xxx.php on line xxx

    Das heißt, das was mit Deinem SQL-Statement nicht stimmt.

    Es liegt doch wahrscheinlich an dem mysql_num_rows und dem WHERE in dem mysql_select denn ohne WHERE funktioniert die scheiße!

    Es liegt an Deinem SQL-Statement, und wenns ohne WHERE funktioniert, dann liegts an dem ,was alles hinter WHERE steht.

    Grundsätzlich ist es zum Debuggen von MySQL-Fehlern sinnvoll, sich auch das SQL-Statement, daß an die DB geschickt wird auszugeben lassen.
    Auch ist es ratsam, sich die Fehler, die MySQL zurückgibt ausgeben lassen.
    (Lesetip: http://de2.php.net/manual/de/function.mysql-query.php)

    In deinem Fall denke ich, daß Du besser "... loggin = '".$log."' ..." (oder auch '... ="'.$log.'"; analog bei pas_s_wort) machen solltest.

    MfG
    Götz

    --
    Losung und Lehrtext für Samstag, 27. Dezember 2003
    Die Völker hören auf Zeichendeuter und Wahrsager; dir aber hat der Herr, dein Gott, so etwas verwehrt. (5.Mose 18,14)
    Was ihr auch tut, das tut alles zu Gottes Ehre. (1.Korinther 10,31)
    (http://www.losungen.de/heute.php3)
  3. Moin!

    $mysql_select="SELECT * FROM $tabelle WHERE login=$log AND paswort=$pass";

    WARNING: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:...xxx\xxx.php on line xxx

    Es liegt doch wahrscheinlich an dem mysql_num_rows und dem WHERE in dem mysql_select denn ohne WHERE funktioniert die scheiße!

    [1] Vielleicht liegt es daran, dass Du eine Spalte 'Passwort' und nicht 'paswort' hast.
    [2] Verbindungsaufbau klappt?
    [3] Wo ist die Fehlerbehandlungsroutine?
         Ich meine sowas: $result=mysql_query($mysql_select) or die("<hr>".mysql_error."<br>".$mysql_select."<hr>")

    Dann müsstest Du nicht hier fragen... weil Du eine aussagekräftige Fehlermeldung hättest. (Vermutlich sowas wie "Spalte paswort existiert nicht in Tabelle ...".

    [4] $mysql_select="SELECT * FROM $tabelle WHERE login=$log AND paswort=$pass";
    Das ist böse, böse, böse! Niemals SELECT *, wo sind die Quotas?

    Vielen Dank für die Hilfe

    Bitte.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.