数据库错误故障排除:参数编号无效
当前的问题涉及尝试多次插入操作时的 SQL 查询准备错误。具体来说,遇到了错误消息“SQLSTATE[HY093]: Invalid parameter number:parameter was not Defined”。
经调查,很明显 $values 和 $matches 数组中的元素数量不符合匹配。这种差异是由于 $values 可能包含进入循环之前的现有值这一事实引起的。要解决此问题,必须将 $values 初始化为空数组。
此外,建议确保“哈希”列应用了唯一索引。这将防止将重复值插入到数据库中。
以下是解决这些问题的修订后的代码片段:
$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);
以上是如何修复多次插入中的'SQLSTATE[HY093]:无效参数号”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!