MySQL PDO没有错误,但没有提取数据

时间:2014-10-23 22:11:51

标签: mysql pdo

我的MySQL PDO查询正在进行一些时髦的事情。

如果我传入一个值数组,则不会。 如果我没有通过数组,那就可以了。

我知道这是因为我得到了一个PDO错误0000,但是当我跑的时候      $ num_events_months = $ result_events_months-> rowCount();

如果值被硬编码到查询中,它只返回一个值。

我只是不确定我做错了什么?

以下不起作用:

$query_events_months = "SELECT DATE_FORMAT(event_date, '%Y-%m') AS event_month_year, DATE_FORMAT(event_date, '%M') AS event_month_name FROM Events WHERE event_date >= :current_date AND status = :status GROUP BY event_month_year";
$result_events_months = $conn->prepare($query_events_months);
$result_events_months->execute(array(':current_date'=>'2014-10-01',':status'=>'published'));

以下内容有效:

$query_events_months = "SELECT DATE_FORMAT(event_date, '%Y-%m') AS event_month_year, DATE_FORMAT(event_date, '%M') AS event_month_name FROM Events WHERE event_date >= '2014-10-01' AND status = 'published' GROUP BY event_month_year";
$result_events_months = $conn->prepare($query_events_months);
$result_events_months->execute(array(':current_date'=>'2014-10-01',
                                   ':status'=>'published'));

我只是不确定我做错了什么?

1 个答案:

答案 0 :(得分:0)

PDO ERROR 000是查询成功执行时返回的值。

你应该只在失败时打印,否则你应该忽略。

在你的情况下,有些东西:

if(!$result_events_months->execute(array(...))){
   var_dump($result_events_months->errorInfo()); //not outside of the failure block
}else{
   var_dump($result_events_months->fetchAll());
}