我在MySQL查詢用下面的代碼:MYSQL IN子句錯誤
$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.')')
;
但是用我收到以下錯誤上面的代碼:
"An error has occured SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1"
我加了引號( "
)爲IN
條款。但問題是查詢只顯示第一個$AIDS
號碼。有人可以幫我清除錯誤嗎? 謝謝!
謝謝您的答覆。我已經嘗試了你的建議。它顯示了錯誤的值。根據你的建議,輸出是43:30 \t 28:45。我已經嘗試了硬編碼的查詢,如: - > where('timesheets_tasks.ProjectID IN(40,118,139)')。那麼輸出是51:30-34:30。所以我認爲根據你的建議,查詢只需要第一個參數(40) – NewPHP
@NewPHP:我不知道什麼是'51:30-34:30'。 「所以我認爲根據你的建議,查詢只接受第一個參數」---它接受你在數組中傳遞的任何內容。如果結果是意外的 - 請檢查你在'all_PIDs'中傳遞的內容 – zerkms
我的意思是輸出。我只需要說根據你的建議輸出是不正確的。正確的輸出是51:30-34:30。但我通過使用 - > where('timesheets_tasks.ProjectID IN(?)',$ AIDS)得到43:30 \t 28:45。 – NewPHP