kingcd: SQL problem mitmysql_num_rows():

hallo zusammen,
ich habe folgende fehlermeldung bekommen:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/htdocs/w008c91d/test/buch.php on line 17

Der Befehl print mysql_error(); gibt mir folgendes:
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 'check=1 ORDER BY datum DESC' at line 1

hier mein dazugehöriger PHP-Code:
<?php
$benutzer="d0075***";
$passwort="scholli";
$dbname="d0075***";
$tabellenname="gaestebuch";
//Auslesen der Einträge
$sql = "SELECT absender, betreff, message, datum FROM $tabellenname WHERE check=1 ORDER BY datum DESC ";
$link = mysql_connect("localhost",$benutzer,$passwort);
mysql_select_db("d00756e6", $link);
$result = mysql_query($sql, $link);
print mysql_error();
for ($i=0;$i<mysql_num_rows($result);$i++)
{
$ergebnis[$i]=mysql_fetch_array($result);
}
?>

irgedwer eine idee?
ich weiss nicht wo da der syntaxfehler liegt.
benutzer und dbname sind gleich, schient auch richtig zusein...
danke, gruß kingcd

  1. Hallo
    ich würde erst einmal schauen ob dein Select so überhaupt etwas zurückbringt.
    Und vor allem:
    FROM $tabellenname WHERE

    Schreib mal deine Variable richtig bzw. binde sie so ein wie es ein soll!

    Gruss
    hawk

    1. sorry, gehts genauer?
      wenn ich gerade syntax im Blick hätte, dann hätte ich es schon längst geändert.
      Bitte einmal genau die Fehler.
      Habe das aus nem TUT.
      danke

      Hallo
      ich würde erst einmal schauen ob dein Select so überhaupt etwas zurückbringt.
      Und vor allem:
      FROM $tabellenname WHERE

      Schreib mal deine Variable richtig bzw. binde sie so ein wie es ein soll!

      Gruss
      hawk

      1. Hallo,

        Bitte einmal genau die Fehler.

        »»Habe das aus nem TUT.

        Nun dann erkundige dich erst einmal wie man PHP Variablen sauber in SQL Kontext einbaut!

        Gruss
        hawk

        1. wenn du mir wirklich helfen willst, könntets Du mal einen Link oder so zur Hilfe posten.
          so mache ich das jedenfalls immer in foren.
          gruß

          Hallo,

          Bitte einmal genau die Fehler.
          »»Habe das aus nem TUT.

          Nun dann erkundige dich erst einmal wie man PHP Variablen sauber in SQL Kontext einbaut!

          Gruss
          hawk

          1. Hallo!

            Probier es mal mit @mysql_num_rows(), also mit einem @-Zeichen vorne. Bei einem Server von mir funktioniert der Befehl auch nur so...!

            Lg

            1. Hello,

              Probier es mal mit @mysql_num_rows(), also mit einem @-Zeichen vorne. Bei einem Server von mir funktioniert der Befehl auch nur so...!

              das rätst du nicht ernsthaft, oder? Weißt du, was @ tut? Mit @ unterdrückst du jegliche Art von Fehlern - SO findest du Fehler in deinem Code sicherlich nicht. Das ist wie wenn du einen Gebrauchtwagen kaufen gehst, dessen Zustand du überhaupt nicht kennst, und dir die Augen zuhälst während du den Kaufvertrag unterschreibst. Dir gehört hinterher möglicherweise ein Auto und du bist auch nicht während der Unterschrift in Ohnmacht gefallen, aber ob du das gewünschte Ziel erreichst...

              MfG
              Rouven

              --
              -------------------
              sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
              Unser Problem ist, dass wir eine Demokratie entwickelt haben, was nicht immer der richtige Weg ist  --  Bernie Ecclestone zu den lästigen Diskussionen um Regeländerungen in der Formel 1
          2. Hallo

            wenn du mir wirklich helfen willst, könntets Du mal einen Link oder so zur Hilfe posten.

            ich will dir schon helfen aber ein wenig nachdenken und nachschauen was man an Hinweise gibt ist doch auch gut oder?

            Also:
            Prüfe erst mal ob überhaupt deine Abfrage was zurückbringt.
            Öffne Phpmyadmin (oder was du sonst für ein Tool hast) und gebe deine Abfrage ein.

            SELECT absender, betreff, message, datum FROM gaestebuch WHERE check=1 ORDER BY datum DESC

            Wenn das klappt dann kann es fast nur noch an deiner Variablen $tabellenname liegen. Ich hatte dir schon mal gesagt (und andere auch) das man PHP Variablen und SQL Code sauber trennen sollte.
            "SELECT .... FROM " . $meinePHPvariable . " WHERE ..."

            Das wäre eine Variante.

            Gruss
            hawk

  2. Hi,

    der Fehler liegt wahrschweinlich bei "FROM $tabellenname WHERE"

    a) es wird wirklich "FROM $tabellenname WHERE" an die DB geschickt, ohne das $tabellenname von PHP aufgelöst wird

    b) es wird "FROM  WHERE" an die DB geschickt

    c) es erkennt "gaestebuch" nicht als Bezeichner in "FROM gaestebuch WHERE" -> verwende backticks  `` drum herum und versuch es mal so:

    $sql = "SELECT .... FROM ".$tabellenname." WHERE ...";

    Ansonsten lass dir zu Kontrollzwecken einfach mal $sql ausgeben, dann siehst du, was wirklich an die DB geschickt wird.

    Ciao, Frank

  3. Hi,

    Der Befehl print mysql_error(); gibt mir folgendes:
    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 'check=1 ORDER BY datum DESC' at line 1

    MySQL reagiert etwas reserviert, weil du ein reserviertes Wort als Spaltenbezeichner benutzt hast.

    MfG ChrisB