多次插入查询执行失败:原因和解决方案
执行多部分插入查询可能会导致以下错误消息failed:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
แม้ว่าก่อนเรียกใช้ count($matches) 会匹配 count($values),可能会出现此错误。
此错误的原因是$values中的元素与$matches中的元素数量不匹配。如果$values和$matches不包含相同数量的元素,则插入请求失败,因为查询需要X个参数,但只获取Y个数据元素($matches)。在这种情况下,$values很可能已经包含值。这就是元素数量不匹配的原因。
为了避免这个问题,数组必须始终在循环之前初始化。
此外,需要确保列“ hash " 包含唯一索引。
以下是更正代码结构的示例:
$matches = array('1'); $count = count($matches); $values = []; for($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // INSERT INTO DATABASE $sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)"; $stmt = $dbh->prepare($sql); $data = $stmt->execute($matches);
以上是为什么我的多部分 INSERT 查询失败,如何修复?的详细内容。更多信息请关注PHP中文网其他相关文章!