我已经阅读了很多讨论这个问题的线程,但我找不到我的代码有什么问题。我有一个数组:
$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/