【问题标题】:Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in PDO Insert Query未捕获的 PDOException:SQLSTATE[HY093]:无效的参数号:绑定变量的数量与 PDO 插入查询中的标记数量不匹配
【发布时间】:2021-07-10 02:52:35
【问题描述】:

我正在使用 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;

}

致命错误: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in......

db_query_all(Array, 'INSERT INTO `14...') #2 {主}.....

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

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

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

    试试:

     $result->execute($arrayParams); 
    

    【讨论】:

    • 谢谢我认为它有效。但现在它给了我这个错误 SQLSTATE[HY000]: General error
    • 我认为问题是我在插入查询中获取行!什么可以解决这个问题,这是一个问题!
    • 是的,您不能在 INSERT/UPDATE 之后调用 fetch()。将您的调用更改为 db_query_all($count_query_params, $count_query);到 db_execute($count_query_params, $count_query);
    【解决方案2】:

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

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

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

    【讨论】:

    • 感谢您的回复我认为您的解决方案有效,但现在我陷入了另一个问题
    猜你喜欢
    • 2022-01-25
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多