MySQL: SELECT-Probleme mit ">" "<"
Florian
- php
2 wahsaga0 Florian
0 Sven Rautenberg0 Thorsten F.
Hi,
ich wollte euch mal fragen, was an dieser SQL-Abfrage falsch sein soll, denn MySQL hat etwas dran auszusetzen:
$db_user=@mysql_connect("localhost","username","passwort") or die ("Verbindung zu Mysql gescheitert!");
@mysql_select_db("datenbank",$db_user) or die ("Datenbankzugriff gescheitert!");
$sql="SELECT * FROM 'user' WHERE 'online'>".time()-10;
$onlinelist=mysql_query($sql);
while($row=mysql_fetch_assoc($onlinelist)){
echo "$row[nick] <br>";
}
mysql_close();
Egal ob wie hier in PHP eingebettet oder in phpMyAdmin, also dort nur die Abfrage ohne time(),also mit einer anderen zahl, anscheinend scheint MySQL etwas nicht an dem ">" zu mögen. Wie kann ich das anders ausdrücken?
(Ich hab schon klargestellt, dass es mindestens 1 ergebnis gibt)
hi,
ich wollte euch mal fragen, was an dieser SQL-Abfrage falsch sein soll, denn MySQL hat etwas dran auszusetzen:
Und das wäre? (Fehlermeldung)
$sql="SELECT * FROM 'user' WHERE 'online'>".time()-10;
Bist du sicher, dass du den Textstring 'online' mit einer Zahl vergleichen willst?
gruß,
wahsaga
Fehlermeldung:
Mysql-Fehler: 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 '-10' at line 1
Hallo Florian,
PHP-Code ist für SQL-Probleme nicht besonders hilfreich, interessant ist das resultierende SQL-Statement.
$sql="SELECT * FROM 'user' WHERE 'online'>".time()-10;
$sql enthält also in etwa die Zeichenkette
SELECT * FROM 'user' WHERE 'online'>1141233944
Mysql-Fehler: 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 '-10' at line 1
Das MySQL-Handbuch, Abschnitt Legal Names informiert Dich darüber, dass das Quotierungszeichen der Backtick ist. Quotierungszeichen sind nur erforderlich, wenn ein Name entweder ein reserviertes Wort ist oder spezielle Zeichen enthält.
Der Tabellenname user und der Spaltenname online sind weder reservierte Worte, noch enthalten sie spezielle Zeichen. Quotierung ist in diesem Fall überflüssig (aber erlaubt). Das einfache Hochkomma ist ein Sonderzeichen, es müsste quotiert werden.
SELECT * FROM user WHERE online > 1141233944
wäre syntaktisch korrekt genauso wie
SELECT * FROM
userWHERE
online > 1141233944
.
Freundliche Grüße
Vinzenz
Moin!
ich wollte euch mal fragen, was an dieser SQL-Abfrage falsch sein soll, denn MySQL hat etwas dran auszusetzen:
Und es sagt dir durch die Fehlermeldung, die du mit mysql_error() auch abfragen kannst, genau, _WAS_ es auszusetzen hat.
Also bitte: Was sagt MySQL in der Fehlermeldung?
$onlinelist=mysql_query($sql) or die ("Mysql-Fehler: ".mysql_error());
- Sven Rautenberg
Habe schon vor längerer Zeit mit PHP und MYsql gearbeitet, also nicht böse sein, wenn ich jetzt Kappes erzähle.
Müssen die beiden Begriffe user und online in einzelnen Hochkommata geschrieben werden?
Gruß,
Thorsten F.
Hallo Thorsten,
Müssen die beiden Begriffe user und online in einzelnen Hochkommata geschrieben werden?
nein, Deine Erinnerung trügt Dich nicht. Das hier nicht erforderliche Quotierungszeichen ist der Backtick und nicht das einzelne Hochkomma, siehe z.B. auch Archiv.
Freundliche Grüße
Vinzenz