我正在尝试使用以下代码创建一个预准备语句:
$statement = $db->prepare("SELECT * FROM myTable WHERE
STR_CMP(creationDate, $startingDate) = 1 ORDER BY creationDate DESC ");
我也试过这个:
$statement = $db->prepare("SELECT * FROM myTable WHERE
(creationDate > $startingDate) = 1 ORDER BY creationDate DESC ");
但是我得到了空$statement
。我的目标是获得它的创建日期比给定日期字符串更新的行。我的creationDate
列存储为字符串。
我已经记录了我的查询字符串,它看起来像:
SELECT * FROM myTable WHERE (creationDate > 05.02.2015 14:08:31) = 1 ORDER BY creationDate DESC
我做错了什么?
答案 0 :(得分:0)
1)您必须比较日期。
SELECT * FROM myTable WHERE
DATE_FORMAT(STR_TO_DATE(creationDate, '%d.%m.%Y %H:%i:%s'),'%d.%m.%Y %H:%i:%s')
> '.$startingDate.' ORDER BY creationDate DESC
提示
2)将日期存储在DB中作为日期而不是字符串
3)您的日期字符串似乎无效? 为什么不YYYYMMDD。
ORDER BY creationDate DESC
可能会造成意外的冲击
答案 1 :(得分:0)
我通过在我的数据库的phpMyAdmin
sql查询部分中尝试查询字符串解决了我的问题。当我构建我的查询时,我已经重新开始了:
$statement = $db->prepare("SELECT * FROM myTable WHERE
(creationDate > $startingDate) = 1 ORDER BY creationDate DESC ");
变成:
SELECT * FROM myTable WHERE (creationDate > 05.02.2015 14:08:31) = 1
ORDER BY creationDate DESC
和MySql
给出了05.02.2015 14:08:31
所以我准备了这样的声明:
$queryString = 'SELECT * FROM arendi_ideas WHERE (creationDate > "'.$startingDate.'") = 1 ORDER BY creationDate DESC';
$this->logger->debug("GetIdeasNewerThan: Query string = $queryString");
$this->statement = $this->db->prepare($queryString);
它工作正常。