多重插入查询中出现意外错误
代码片段尝试准备并执行 SQL 查询以将多个值插入到表中。但是,执行失败,并出现错误“SQLSTATE[HY093]:参数编号无效:参数未定义。”
错误原因
发生错误的原因是$values 数组中的元素数量与 $matches 数组中的元素数量不匹配。 SQL 查询需要特定数量的参数,但 PHP 代码提供了不同的数量。
解决方案
要解决该错误,请确保 $values 和 $匹配数组包含相同数量的元素。这可以通过在循环之前初始化 $values 数组来实现。
此外,建议检查哈希列是否具有唯一索引。如果没有,ON DUPLICATE KEY UPDATE 子句可能无法按预期工作。
修订的代码
$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);
以上是为什么我的多个 SQL INSERT 查询失败并显示'SQLSTATE[HY093]:参数号无效”?的详细内容。更多信息请关注PHP中文网其他相关文章!