PDOStatement :: execute():SQLSTATE [HY093],批量插入时的奇怪行为
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PDOStatement :: execute():SQLSTATE [HY093],批量插入时的奇怪行为相关的知识,希望对你有一定的参考价值。
有人可以帮忙吗?我正在尝试进行批量插入(400行),每次在数据库中插入58行后显示错误消息,我尝试了不同的数据集,它的行为方式相同。
警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配
这是代码:
$rows = $_POST['myTableArray'];
$nrecuser= $_SERVER['REMOTE_ADDR'];
$ndatetime= date('Y-m-d G:i:s');
$sql = "INSERT INTO dbo.rec(ncode, nname, nprimary, ndate, nyear, nperiod,
nref, ntype, nuser, ncategorycode1, ncategorycode2,
ncategorycode3, namount, ndescription, naccount,
nmajorheadcode, ncheck, nrecuser, ndatetime)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
include_once dirname(__FILE__) . '/includes/db.inc.php';
try
{
$conn->beginTransaction();
$stmt = $conn->prepare($sql);
foreach($rows as $row)
{
array_push($row, $nrecuser, $ndatetime);
$stmt->execute($row);
}
$conn->commit();
exit();
}
catch (PDOException $e)
{
$conn->rollback();
echo $e;
exit();
}
答案
给定的插入查询参数的数量不等于您要传递给插入的值
另一答案
事实证明这是一个服务器端问题,我必须更新php.ini max_input_vars设置。谢谢您的帮助。
以上是关于PDOStatement :: execute():SQLSTATE [HY093],批量插入时的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章
不断收到错误警告:PDOStatement::execute() 最多需要 1 个参数,2 在 config.php 第 15 行中给出
Mysql 错误 PDOStatement::execute(): MySQL server has gone away using Laravel and curl request
SQL 错误 PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: 绑定变量的数量与中的标记数量不匹配