MYSQL IN子句错误


MYSQL IN Clause error

我在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.')'