MySQL Select abfrage PHP7 WHERE Zeitstempel > als

  • Hallo MySQL-Freunde,


    ich habe mit einer Select-abfrage in PHP7 ein problem. Möchte Datensätze filtern nach Zeitstempel (nicht älter als 2 Tage).


    $sql = 'SELECT * FROM `sensorwerte` WHERE `Zeitstempel` > \'2018-03-01\' AND `Sensorname1` LIKE \'PM 10\' ORDER BY `Zeitstempel`';


    funktioniert


    -----------------------------


    $suchDatum = strtotime("-2 day");

    $neuesDatum = date("Y-m-d", $suchDatum);

    $abDatum = (string) $neuesDatum;

    $sql = 'SELECT * FROM `sensorwerte` WHERE `Zeitstempel` > \'\.$abDatum\.\' AND `Sensorname1` LIKE \'PM 10\' ORDER BY `Zeitstempel`';


    funktioniert NICHT.

    Ergebnis ist NICHT gefiltert. Die Variable $abDatum im Select wird ignoriert.


    Was mache ich falsch?


    VG

    Peter

  • Deine Zuweisung ist fehlerhaft und wird zu folgendem String zusammengesetzt (kannst du per Ausgabe via echo $sql; testen):


    SELECT * FROM `sensorwerte` WHERE `Zeitstempel` > '\.$abDatum\.' AND `Sensorname1` LIKE 'PM 10' ORDER BY `Zeitstempel`



    Verwende doppelte statt einfache Hochkommata um den gesamten String. Dann werden Variablen substituiert und das ganze Statement ist auch leichter zu lesen.

    Code
    $sql = "SELECT * FROM `sensorwerte` WHERE `Zeitstempel` > '$abDatum' AND `Sensorname1` LIKE 'PM 10' ORDER BY `Zeitstempel`";
  • Danke wildspitze, werde ich versuchen.


    mit "echo $sql;" habe ich auch schon geprüft, aber das gewünschte Ergebnis nicht hinbekommen.