当我尝试使用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
答案 0 :(得分:4)
不要用引号包装值。
更改
':start' => '"'.$date_start.'"',
':end' => '"'.$date_end.'"',
到
':start' => $date_start,
':end' => $date_end,
让我知道它是否适合你。