MySQL: Fehler in der Abfrage?!?
kphaber321
- datenbank
0 Sven Rautenberg0 kphaber3210 kphaber3210 steckl
2 Sven Rautenberg
0 Mike©
Hallo Forenvolk!
Ich rätsel und probier jetzt schon seit einiger Zeit an folgendem Problem, was ich irgendwie alleine nicht hinbekomme:
Ich habe eine Datenbankabfrage, die mir alle Posts der letzten 24h geben soll
<?php
$maxtime = date("U") - 86400; // 86400 = 24h in sekunden ;-)
$dbhandle = mysql_connect("localhost","***","***");
$db = mysql_select_db("***", $dbhandle);
$sql = 'SELECT * FROM mychat
ORDER BY unixtime WHERE unixtime >= $maxtime';
$abfrage = mysql_query("$sql");
echo "<table>";
while (list($id, $unixtime, $time, $name, $text) = mysql_fetch_row($abfrage)){
echo "<tr><td>$time [$name]:</td><td>$text</td></tr>";
}
?>
und es kommt folgender Fehler dabei heraus:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/mychat/show.php on line 18
Weiß jemand was ich falsch gemacht habe???
MfG
kphaber321
Moin!
und es kommt folgender Fehler dabei heraus:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/mychat/show.php on line 18
Weiß jemand was ich falsch gemacht habe???
Wenn du eine standardmäßige Fehlerabfrage machen würdest, würde MySQL dir von sich aus sagen, was es an dem Query nicht mag. mysql_error() heißt die Funktion, die du aufrufen solltest, wenn mysql_query false ergibt.
- Sven Rautenberg
Danke für die Antwort!
Wenn du eine standardmäßige Fehlerabfrage machen würdest, würde MySQL dir von sich aus sagen, was es an dem Query nicht mag. mysql_error() heißt die Funktion, die du aufrufen solltest, wenn mysql_query false ergibt.
Guut, das hab ich dann erstmal gemacht! Das Ergebnis:
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 'WHERE unixtime >= 1193001552' at line 1
Was mich allerdings nicht schlauer macht, da ich vermutet hab, dass an diesem Punkt der Fehler liegt!
Warum allerdings ist mir weiterhin rätselhaft.
Noch eine weitere Hilfe?
MfG
kphaber321
Achso...
Fast vergessen, ich habe eine Zeile geändert:
$sql = 'SELECT * FROM mychat
ORDER BY unixtime WHERE unixtime >= '.$maxtime;
Aber wie gesagt. Es bringt mich nicht sehr viel weiter!
MfG
kphaber321
Hi,
$sql = 'SELECT * FROM
mychat
ORDER BY unixtime WHERE unixtime >= '.$maxtime;
Welchen Datentyp hat denn die Spalte unixtime? Wenn es ein String ist muss dein fertiges SQL-Statement so in der Art ausschauen:
... WHERE unixtime >= '1193001552'
mfG,
steckl
Hallo!
Welchen Datentyp hat denn die Spalte unixtime? Wenn es ein String ist muss dein fertiges SQL-Statement so in der Art ausschauen:
Ich hab einfach Text genommen... klappte sonst immer prima!
... WHERE unixtime >= '1193001552'
Ich hab jetzt mal 2 verschiedene Sachen probiert:
1)
...
$sql = 'SELECT * FROM mychat
WHERE unixtime >= '.$maxtime.' ORDER BY unixtime;';
echo $sql; // nur zum angucken
mysql_query("$sql") or die(mysql_error());
...
...
$sql = 'SELECT * FROM mychat
WHERE unixtime >= ''.$maxtime.'' ORDER BY unixtime;';
echo $sql; // nur zum angucken
mysql_query("$sql") or die(mysql_error());
...
Es ging beiden nicht und gibt aus:
SELECT * FROM mychat
WHERE unixtime >= '1193057346' ORDER BY unixtime;
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/mychat/show.php on line 23
Ich hab irgendwie das Gefühl, dass ich irgendwas einfach nich sehe, oder ich einfach nur zu dumm bin und niie wieder eine Datenbank benutzen sollte :-( oder beides...
Bitte nochmal Hilfe, sonst raste ich noch voll aus ^^
MfG
kphaber321
Es tut mir leid! Es geht wohl!!! Hab nur eben einen Fehler gemacht und hier
$abfrage = mysql_query("$sql") or die(mysql_error());
das $abfrage = vergessen!!! Dann kann er natürlich das mysql_fetch_row natürlich nicht ausführen!!!
Danke für die Hilfen!
MfG
Jonas
Moin!
Was mich allerdings nicht schlauer macht, da ich vermutet hab, dass an diesem Punkt der Fehler liegt!
Warum allerdings ist mir weiterhin rätselhaft.
Mir nicht. Bei SQL kommt es auf die Reihenfolge der Bestandteile an, du darfst nicht wild mischen.
- Sven Rautenberg
Moin kphaber321,
$sql = 'SELECT * FROM
mychat
ORDER BY unixtime WHERE unixtime >= $maxtime';
$abfrage = mysql_query("$sql");
Sven hatte es ja bereits angedeuted. Du darfst nicht mischen, es kommt auf die Reihenfolge an.
Das WHERE kommt vor ORDER BY
regds
Mike©