mysql“日期之间”查询在 phpmyadmin 中有效,但 PDO 不返回任何内容

Posted

技术标签:

【中文标题】mysql“日期之间”查询在 phpmyadmin 中有效,但 PDO 不返回任何内容【英文标题】:mysql "between date" query works in phpmyadmin but returns nothing with PDO 【发布时间】:2014-10-11 09:01:55 【问题描述】:

当我尝试使用 php/pdo 运行它时,结果为空,但是当我替换变量并回显查询并将粘贴复制到 phpmyadmin 时,它可以正常工作。

我猜它与查询中的 BETWEEN 部分有关,如果我删除它,它会起作用。

php代码:

$sql = 'SELECT * from `activity` 
WHERE `activity`.`employee_id` = :id 
AND `activity_endtime` BETWEEN :start 
AND :end 
ORDER BY :order LIMIT 0 ,:limit';

$date_end = date('Y-m-d',time());
$date_start = date('Y-m-01',strtotime($date_end));
$values = array(
':id' => $_SESSION['user_id'], 
':start' => '"'.$date_start.'"', 
':end' => '"'.$date_end.'"',
':order' => 'activity_id', 
':limit' => '10');
$q->execute($values);

while($r = $q->fetch(PDO::FETCH_ASSOC))
 //does not get here after adding the between part

我通过替换参数和回显得到的查询:

SELECT * from `activity` 
WHERE `activity`.`employee_id` = 7 
AND `activity_endtime` BETWEEN "2014-08-01" 
AND "2014-08-18" 
ORDER BY activity_id LIMIT 0 ,10

【问题讨论】:

由于您可能没有检查错误,请在打开连接后立即添加$q->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 【参考方案1】:

不要用引号将值括起来。

改变

':start' => '"'.$date_start.'"', 
':end' => '"'.$date_end.'"',

':start' => $date_start, 
':end' => $date_end,

如果它对你有用,请告诉我。

【讨论】:

我也打算这么说@JayBlanchard,但看到编辑的方式,他想他会明白的;)编辑:啊,删除......你很快 是的,我只是在第二次复制/粘贴后忘记省略它。在我点击提交按钮后修复它。不过谢谢。 :)

以上是关于mysql“日期之间”查询在 phpmyadmin 中有效,但 PDO 不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在mysql选择查询中获取两个日期之间的日期列表[重复]

mysql查询两个日期之间相差多少天?

mysql如何提取两个日期之间的所有数据

Mysql查询使用两个日期之间检索记录

mysql如何查询两个日期之间最大的连续登录

如何在 MySQL 中的两个日期之间获取特定日期