0

我在 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数字。有人可以帮我清除错误吗?谢谢!

4

2 回答 2

0

应指定为:

->where('timesheets_tasks.ProjectID IN (?)', $all_PIDs)

所以你传递的是一个整数数组,而不是逗号分隔的列表

于 2013-08-25T23:47:57.833 回答
0

在您的代码中,引号不是您的 MySQL 查询的一部分,而只是您的 PHP 部分。做这个

$AIDS= "'".implode("','",$all_PIDs)."'";

接着

>where('timesheets_tasks.ProjectID IN ('.$AIDS.')'
于 2013-08-25T23:48:35.343 回答