我正在尝试使用带有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) {}
答案 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) {}
更好的解决方案是使用准备好的声明,这样您就不必担心自己引用和转义字符串。