未捕获的 PDOException:SQLSTATE [HY093]:参数编号无效:绑定变量的数量与 PDO 插入查询中的标记数量不匹配

Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in PDO Insert Query

我正在使用 PDO 执行插入查询,但它向我抛出此错误,我无法理解问题出在哪里!请帮帮我!提前谢谢你:)

    $count_query_params = [$fromDate, $toDate, $TRNO];
    $count_query = "INSERT INTO `$HA_ENTRIES`(`fromDate`, `toDate`, `user_trno`) VALUES (?,?,?)";
    $count_row = db_query_all($count_query_params, $count_query);

// DB_Query_ALL function

function db_query_all($arrayParams, $query)
{
global $conn;

$result = $conn->prepare($query);
foreach ($arrayParams as $param) {
    $result->execute([$param]);
}

$rows = array();
while ($row = $result->fetch()) {
    $rows[] = $row;
}
if (count($rows) < 1) {
    $rows = false;
}
return $rows;

}

致命错误:未捕获的 PDOException:SQLSTATE[HY093]:无效参数编号:绑定变量的数量与......

db_query_all(数组,'INSERT INTO `14...') #2 {主要}.....

关于您的示例代码,我认为您必须只调用一次 execute()。所以,而不是:

foreach ($arrayParams as $param) {
    $result->execute([$param]);
}

尝试:

 $result->execute($arrayParams); 

您的查询包含三个占位符。您传递给 db_execute() 的数组具有三个变量,但是您为这三个变量分别调用了一次 $results->execute(),每次只绑定一个变量,因此出现消息。

将您的 db_execute() 函数更改为仅调用 $results->execute() 一次,但同时将所有传递的变量绑定到数组中:

// Execute Any Query With Params 
function db_execute($arrayParams, $query)
{
    global $conn;
    $results = $conn->prepare($query);

    $results->execute($arrayParams);

    return $results;
}