我有一个将复选框提交给 PHP PDO 脚本的表单。我有如下代码将值存储到 mysql 表中
$stmt = $dbPDO->prepare("INSERT INTO group_members(g_id, em_id)
VALUES(:g_id,:em_id)
ON DUPLICATE KEY UPDATE g_id = :g_id, em_id = :em_id");
foreach ($_POST['id'] as $email) {
$stmt->bindParam(':g_id', $gid , PDO::PARAM_INT);
$stmt->bindParam(':em_id', $email , PDO::PARAM_STR);
$stmt->execute();
}
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number'
这会产生错误。将多个值插入具有不同值的 mysql 表中的最佳方法是什么?
最佳答案
每个命名占位符都必须是唯一的!
$stmt = $dbPDO->prepare("INSERT INTO group_members(g_id, em_id) VALUES(:g_id,:em_id) ON DUPLICATE KEY UPDATE g_id = :g_id2, em_id = :em_id2");
$email=null;
//just bind once, that the logic behind 'bind()'
$stmt->bindParam(':g_id', $gid , PDO::PARAM_INT);
$stmt->bindParam(':em_id', $email , PDO::PARAM_STR);
$stmt->bindParam(':g_id2', $gid , PDO::PARAM_INT);
$stmt->bindParam(':em_id2', $email , PDO::PARAM_STR);
foreach ($_POST['id'] as $email) {
$stmt->execute();//write your rows
}
$stmt->close();
关于php - 使用 PDO 在 mysql 表中插入多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41811059/