php - SQLSTATE[HY093] : Invalid parameter number: parameter was not defined'

标签 php mysql pdo

我已经阅读了很多讨论这个问题的线程,但我找不到我的代码有什么问题。我有一个数组:

    $insert_arr["$key"]['customer']["$cust->Company"]['cpq_id'] = "$cust->CustomerId";
    $insert_arr["$key"]['customer']["$cust->Company"]['shop_cart_id'] = "$cust->ShopCartId";
    $insert_arr["$key"]['customer']["$cust->Company"]['user_id'] = "$cust->UserId";
    $insert_arr["$key"]['customer']["$cust->Company"]['company'] = "$cust->Company";
    $insert_arr["$key"]['customer']["$cust->Company"]['crm_id'] = empty("$cust->CRMAccountId") ? 0 : "$cust->CRMAccountId";

稍后,我有:

$q_customer = 'insert into customers
                                 (
                                   cpq_id, 
                                   shopping_cart_id,
                                   user_id,
                                   company_name,
                                   crm_id
                                  )
                                  values (?, ?, ?, ?, ?)';
$sc = $db2->prepare($q_customer);

稍后:

foreach ($insert_arr as $id => $arr) {
    foreach($arr['customer'] as $c) {
            $sc->execute($c);
    }
}

我总是收到标题中引用的错误。我以前从未使用过 PDO,我不知道出了什么问题。请帮忙!

最佳答案

如果您想使用关联数组作为 execute() 的参数,则必须使用命名占位符,而不是 ?。占位符名称必须与数组索引匹配。

$q_customer = 'insert into customers (cpq_id, shopping_cart_id, user_id, company_name, crm_id) values (:cpq_id, :shop_cart_id, :user_id, :company, :crm_id)';
$sc = $db2->prepare($q_customer);
foreach ($insert_arr as $id => $arr) {
    foreach($arr['customer'] as $c) {
            $sc->execute($c);
    }
}

关于php - SQLSTATE[HY093] : Invalid parameter number: parameter was not defined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42636813/

相关文章:

php - 访问 mysql 表中的所有数据时遇到问题

php - 在 PDO 选择查询中组合两列/字段

php - 如何制作成对的数组值?

php - 使用 php 显示存储在数据库中的图像(tinyblob)

javascript - Bootstrap data-id 不传递值

php - 加载 PHP 的 PDO 驱动程序的正确方法?

php - Symfony 4 注册表第二次提交 "There is already an active transaction"

MySQL 错误-我在这里做错了什么?

javascript - 使用 Sequelize ORM 创建多个 INNER JOINS

mysql - 如何在 SQL REGEX 中分隔 "/"