当两次使用相同的参数时,PHP MySQL PDO执行函数不给出任何结果

时间:2013-11-17 18:44:53

标签: php mysql sql pdo

如果我手动执行以下查询替换为值而不是:,它的工作但相同的查询如果通过php执行则不会返回任何内容...

$sql_check = $dbConnection->prepare("select sum(case when 
upper(main_category)=upper(:main_category) and 
upper(sub_category1)=upper(:sub_category1) then 1 
when upper(main_category)=upper(:main_category) then 1 else 0 end) cnt from dbs.sales;");
$sql_check->execute(array(':main_category' => $main_category,':sub_category1' =>
$sub_category1,':sub_category2' => $sub_category2));

foreach ($sql_check as $row) {
$cnt=$row['cnt'];
echo "cnt ".$cnt."<br>"; //No rows returned upon execution
}//end of for loop

此处:main_category 正在使用两次

  

如果我不使用:main_category 两次,上面的查询工作正常......

如果要在查询中使用相同的参数化字段,请帮助我并告诉我如何运行查询?

1 个答案:

答案 0 :(得分:2)

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE);

首先让它发挥作用

$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

也很有用