Datenbank Query nach Datum filtern
boeschung
- php
Hallo Zusammen,
eigentlich eine ganz einfache Sache, oder? Ich will eigentlich nur die Datensätze aus einer Datenbank abfragen, deren Datum im Feld "release" mit einem Datum übereinstimmen, dass ich über ein Formular angebe. Das Datenbank-Feld "release" ist vom Typ DATE, der String zum Vergleichen entsprechend formatiert: 2010-02-05 (so steht der Wert auch in der Datenbank).
Nun meine Frage: warum funktioniert folgendes Query nicht bzw. wo liegt der Fehler? Obwohl Datensätze mit dem gesuchten Datum vorhanden sind, bekomme ich NULL zurück (kein leeres Array) :-/
$query = 'SELECT *'
. ' FROM #__bo_bargains'
. ' WHERE release='.$release
;
$db->setQuery($query);
$bargains = $db->loadObjectList();
Vielen Dank schonmal für Eure Unterstützung.
Viele Grüße
boeschung
WHERE release=2010-02-05
2010 minus 02 ist 2008
2008 minus 05 ist 2003
und in release steht nicht 2003
Ok, verstehe, aber der übergebene Wert ist bereits ein String. Wie muß ich dann den Wert übergeben, in Anführungszeichen oder evtl. vorher eine Typkonvertierung vornehmen?
Viele Grüße
boeschung
So wie du ganz normale Strings in einer Query auch maskierst.
Lass dir $query mal ausgeben, dann wirst du sehen, dass MySQL von Hochkommas nichts mitbekommt.
Hi,
Ok, verstehe, aber der übergebene Wert ist bereits ein String.
Für PHP, ja. Aber das ist der Datenbank egal.
Und der hast du keinen Stringwert übergeben.
Wie muß ich dann den Wert übergeben, in Anführungszeichen oder evtl. vorher eine Typkonvertierung vornehmen?
http://dev.mysql.com/doc/refman/5.1/en/string-syntax.html
MfG ChrisB
@ChrisB, DiBo33
Vielen Dank für Eure Hinweise. Jetzt habe ich den Fehler endlich gefunden. Nachdem ich den String, der für den Vergleich herangezogen wird, entsprechend "gequoted" hatte, bekam ich nach wie vor NULL als Rückgabewert (und nicht wie zuerst erwartet ein leeres Objekt). Erst nachdem ich es folgendermaßen geschrieben hatte, hat es schlußendlich funktioniert:
$query = 'SELECT COUNT(*)'
. ' FROM #__bo_bargains'
. ' WHERE `release` = '.$db->Quote($release, false)
. ' AND placement='.$placement
;
Viele Grüße
boeschung