就我而言,我正在从多个表中删除,LEFT JOIN
并且需要提供要删除的问题 ID 数组。问题 id 的数组是$questions_to_delete
.
无法通过将数组作为参数绑定mysqli
是一种痛苦,我已经查看了一些 SO 问题来得出这个结论:
$params = implode(',', array_fill(0, count($questions_to_delete), '?'));
$types = array_fill(0, count($questions_to_delete), 'i');
$delete_questions = $mysqli->prepare('DELETE ...
FROM questions
LEFT JOIN ...
WHERE questions.id IN ('.$params.')');
call_user_func_array(array(&$delete_questions, 'bind_param'), array_merge($types, $questions_to_delete));
$delete_questions->execute();
$delete_questions->close();
我得到的错误是
警告:mysqli_stmt::bind_param() [mysqli-stmt.bind-param]:类型定义字符串中的元素数与绑定变量数不匹配
我注意到一些答案使用了&$delete_questions
vs $delete_questions
,但我对 PHP 抱怨的内容感到困惑。