首页 > 解决方案 > 如何在 PDO MySQL 中同时插入两个不同的数组?

问题描述

我在使用 PDO 插入时遇到问题。我想将一个多维数组插入到一个数据库中,我设法做到了。但是,我也想插入一个完全不同的数组,与第一个数组断开连接到同一个数据库行(这意味着相同的 INSERT 查询)。第一个多维数组 = $_POST['training'] 第二个数组 = $training_diploma 有点难以解释。这是代码:

$id = "1";
$training_diploma = ("master", "bachelor");
$id_training_key = $id_training_key = $id.'_'.$training_diploma; (return: 1_master)

$sql = "INSERT INTO users_resumes (id,resume_category,id_training_key,training_diploma,training_school,training_level,training_start_date,training_end_date) VALUES ($id,'Training',$id_training_key,:training_diploma,:training_school,:training_level,:training_start_date,:training_end_date)";
$stmt= $pdo->prepare($sql);
foreach($_POST['training'] as $params){
   $stmt->execute($params);
}

非常欢迎任何帮助!感谢战利品!

标签: phparraysmultidimensional-arraypdo

解决方案


您需要迭代$training_diploma数组以及$_POST数组。最好在查询中还包含idandid_training_key作为参数,这样您就不必为每组值准备新查询:

$id = "1";
$training_diploma = array("master", "bachelor");

$sql = "INSERT INTO users_resumes (id,resume_category,id_training_key,training_diploma,training_school,training_level,training_start_date,training_end_date) VALUES (:id,'Training',:id_training_key,:training_diploma,:training_school,:training_level,:training_start_date,:training_end_date)";
$stmt= $pdo->prepare($sql);
foreach($_POST['training'] as $params) {
    foreach ($training_diploma as $diploma) {
        $stmt->execute(array_merge($params, array('id' => $id, 'id_training_key' => $id . '_' . $diploma)));
    }
}

推荐阅读