php - 使用 PDO 在 mysql 表中插入多个值

标签 php mysql pdo

我有一个将复选框提交给 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/

相关文章:

javascript - 我想从公开的 Facebook 墙贴中获取数据

javascript - 使用 JavaScript 使用来自 PHP 数组的选项填充动态创建的下拉列表

mysql - sqlfiddle 中的 Bug 或者我不明白 INSERT ... ON DUPLICATE KEY UPDATE

mysql - 将 SQL 查询转换为 CakePHP 3.0

php - MySQL更新,使用PDO跳过空白字段

php - PDO 保持 mysql 连接多长时间?

php - 未找到 Lumen PDO 驱动程序

PHP:将远程文件写入目录,无需 chmod 777

php - 选择 5 秒前插入的行

PHP : You have an error in your SQL syntax check the manual