首页 >数据库 >mysql教程 >为什么我的多部分 INSERT 查询失败,如何修复?

为什么我的多部分 INSERT 查询失败,如何修复?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-25 07:36:28972浏览

Why Does My Multi-Part INSERT Query Fail, and How Can I Fix It?

多次插入查询执行失败:原因和解决方案

执行多部分插入查询可能会导致以下错误消息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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn