我在mysql查询中使用了以下代码:
$all_PIDs=array();
foreach($pID as $p)
{
$all_PIDs[]=$p->ID;
}
$AIDS=implode(',',$all_PIDs);
$table_tsk = new Timesheets_Table_Tasks();
$select_tsk = $table_tsk->select()
->from($table_tsk, array
(
'Total'=>'SUM(timesheets_tasks.Time)',
'Charged'=>'SUM(timesheets_tasks.Time_Charged)'
))
->where('timesheets_tasks.ProjectID IN ('.$AIDS.')')
;
但是使用上面的代码我得到了以下错误:
"发生错误SQLSTATE[42000]:语法错误或访问违规:1064您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在第1行""的")"附近使用的正确语法
我为IN
子句添加了一个引号("
)。但问题是查询只显示第一个$AIDS
号码。有人能帮我纠正这个错误吗?谢谢
应指定为:
->where('timesheets_tasks.ProjectID IN (?)', $all_PIDs)
所以您传递的是一个整数数组,而不是它的逗号分隔列表
在代码中,引号不是MySQL查询的一部分,而只是PHP部分。做这个
$AIDS= "'".implode("','",$all_PIDs)."'";
然后
>where('timesheets_tasks.ProjectID IN ('.$AIDS.')'