首页 > 后端开发 > php教程 > 为什么我的多个 SQL INSERT 查询失败并显示'SQLSTATE[HY093]:参数号无效”?

为什么我的多个 SQL INSERT 查询失败并显示'SQLSTATE[HY093]:参数号无效”?

Barbara Streisand
发布: 2024-12-06 10:13:12
原创
467 人浏览过

Why Does My Multiple SQL INSERT Query Fail with

多重插入查询中出现意外错误

代码片段尝试准备并执行 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板