SQL problem mitmysql_num_rows():
kingcd
- datenbank
0 hawkmaster0 kingcd0 hawkmaster0 kingcd0 Thomas S.0 Rouven
0 hawkmaster
0 Frank (no reg)0 ChrisB
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
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
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 WHERESchreib mal deine Variable richtig bzw. binde sie so ein wie es ein soll!
Gruss
hawk
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
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
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
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
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
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
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