datetime变量比较返回空白

时间:2018-01-27 15:00:35

标签: php mysql datetime

我正在尝试使用带有where和datetime字段的SQL语句从我的mariaDB表中获取数据。当我输入像Datum> =“2018-01-18 15:16:17”这样的字符串时,结果如预期的那样。当我比较变量Datum> = $ ymdt时,我收到一个空白页面。我为字符串尝试了不同的分隔符('“)。我尝试过像City这样的其他字段。这个日期时间我的问题在哪里?

<?php

$dat="2018-01-25 15:16:17"; 
$ymdt = DateTime::createFromFormat('Y-m-d H:i:s', $dat)->format('Y-m-d H:i:s');

echo "<p> Debug Section<br>";
echo $dat;
Output: 2018-01-25 15:16:17
echo "<br>";
echo $ymdt;
Output: 2018-01-25 15:16:17
echo "</p>";

此后续行返回一个空白表,为什么?

foreach($db->query("SELECT * FROM wetterdaten where datum >= $ymdt ORDER BY id DESC") as $zeile) {}

以下行返回从日期填充的表(datetime字段mysql)

foreach($db->query("SELECT * FROM wetterdaten where datum >= '2018-01-25 15:16:17' ORDER BY id DESC") as $zeile) {}

1 个答案:

答案 0 :(得分:1)

foreach($db->query("SELECT * FROM wetterdaten where datum >= $ymdt ORDER BY id DESC") as $zeile) {}
  

此行返回一个空白表,为什么?

因为在此示例中,未引用您的日期/时间字符串。此查询将填充如下:

where datum >= 2018-01-25 15:16:17

您需要将$ymdt变量用单引号括起来:

foreach($db->query("SELECT * FROM wetterdaten where datum >= '$ymdt' ORDER BY id DESC") as $zeile) {}

更好的解决方案是使用准备好的声明,这样您就不必担心自己引用和转义字符串。