Abfrage auf ein Datum

Vorstaedter

Benutzer
Beiträge
21
In einem PHP-Script habe ich eine Variabele $datum; diese enthält einen Datumswert in der Form YYYY-MM-DD (Der Wert kommt aus einem Datenbankfeld vom Typ "date"). Mit dieser Variablen sollen in einer anderen Datenbank Datensätze gefunden werden, die in einem ebenfalls als "date" formatierten Feld namens datum den gleichen Datumswert wie $datum enthalten. Das entsprechende Abfrage-Statement lautet
$res = mysqli_query($con, "SELECT * FROM bildertabelle WHERE datum = $datum");
Obwohl es Datensätze mit gleichem Datum und natürlich gleichem Format gibt, werden mit der vorstehenden Abfrage keine Datensätze gefunden; mysqli_num_rows liefert stets den Wert 0.

Ich komme an diesem Punkt seit Tagen nicht weiter, kann mir bitte jemand sagen, wie ich von der langen Leitung runter komme ?
Vorab schon herzlichen Dank !
 
Werbung:
so, wie Du das abschickst, bekommt die DB einen Vergleich auf z.B. 2016-08-21, was 1987 ergibt. Das möchtest Du sicherlich nicht, oder?
 
$res = mysqli_query($con, "SELECT * FROM bildertabelle WHERE DATE('datum') = $datum");

Mit Variationen wie z.B. der vorstehenden hab ich auch schon rumgespielt; hat leider nichts genutzt.
Kannst Du mir bitte noch ein bißchen mehr an die Hand geben für weitere eigene Forschungen ?

Ich möchte nur die Datensätze finden für die im Feld datum im Formate date in PHPmyAdmin z.B. 2016-08-21 steht
 
Deine Variable $datum enthält sowas wie 2016-08-21, was, wenn man es ausrechnet, 1987 ergibt. Das vergleichst Du dann mit dem, was in der Tabelle steht. Offenbar hast Du aber kein Datum mit diesem Wert. MySQL legt keinen Wert auf Sinnhaftigkeit oder korrekte Datentypen, dafür ist es zu doof. Ich habe jetzt kein MySQL bei der Hand, denke aber, daß es so ist. In PG würdest Du direkt einen Fehler bekommen:

Code:
test=*# select current_date = 2016-08-21;
FEHLER:  Operator existiert nicht: date = integer
ZEILE 1: select current_date = 2016-08-21;
  ^
TIP:  Kein Operator stimmt mit dem angegebenen Namen und den Argumenttypen überein. Sie müssen möglicherweise ausdrückliche Typumwandlungen hinzufügen.

besser:

Code:
test=*# select current_date = '2016-08-21'::date;
 ?column?
----------
 t
(1 Zeile)

test=*#
 
Abgesehen kann es sein das dein Ausgabeformat YYYY-MM-DD ist, deine andere DB aber das englische Format YYYY-DD-MM erwartet. Das am besten erstmal manuell prüfen.
 
Und
Code:
$res = mysqli_query($con, "SELECT * FROM bildertabelle WHERE DATE(datum) = '$datum'");
funktioniert nicht? Du hast vorher den Spaltennamen escaped, das kann natürlich nicht gehen.
 
So, ich habs :
$res = mysqli_query($con, "SELECT * FROM bildertabelle WHERE datum LIKE '$datum' ");

LIKE anstatt = und dann noch die ' um $datum und schon gehts.
Danke für Eure Unterstützung !
 
Werbung:
Zurück
Oben