在一个查询中插入/更新多个选择,每个选择中包含两个值

时间:2016-11-25 00:03:08

标签: php jquery mysql select pdo

我需要知道如何像标题一样进行查询。

我在一个查询中已经有了这个插入/更新... 但在这种情况下,我有一个需要多次选择的表单,我需要插入(如果项目已在数据库中,则更新)。
为此,我需要为每个选择输入提供两个值:

  • 一个用于id
  • 另一个为值

这是插入/更新脚本:

if (!empty($_POST)) {
    $conn->beginTransaction();
    $sql = "INSERT INTO JUZGADOS
    (id, relacion2, opcion3)
    VALUES ";
    $insertQuery = array();
    $insertData = array();
    foreach ($_POST['opcion3'] as $i => $opcion3) {
        if (isset($_POST['delete']) && in_array($_POST['opcion3'][$i], $_POST['delete'])) {
            // Skip rows that are being deleted
            continue;
        }
        $insertQuery[] = '(?, ?, ?)';
        $insertData[] = $_POST['id'][$i] == '' ? null : $_POST['id'][$i];
        $insertData[] = $_POST['relacion2'];
        $insertData[] = $_POST['opcion3'][$i];
    }
    if (!empty($insertQuery)) {
        $sql .= implode(', ', $insertQuery);
        $sql .= " ON DUPLICATE KEY UPDATE
        relacion2 = VALUES (relacion2), opcion3 = VALUES (opcion3)";
        $stmt = $conn->prepare($sql);
        $stmt->execute($insertData);
    }
    if (!empty($_POST['delete'])) {
        $sql = "DELETE FROM JUZGADOS WHERE id IN (";
        $sql .= str_repeat("?, ", count($_POST['delete']) - 1);
        $sql .= "?)";
        $stmt = $conn->prepare($sel);
        $stmt->execute($_POST['delete']);
    }
    $conn->commit();
}

对于多重选择,我有:

<select class="form-control" name="opcion3[]" id="select5" multiple="multiple" required="required">
    <option value="Juzgado_de_lo_Civil" >Juzgado de lo Civil</option> 
    <option value="Juzgado_Primero_de_lo_Civil" >Juzgado Primero de lo Civil</option> 
<?php 
    include_once( $_SERVER['DOCUMENT_ROOT'] .'/config.php');
    $sql = $conn->prepare("SELECT id, opcion3 FROM JUZGADOS WHERE relacion2 = ".$_GET['id']);
    $sql->execute();
    while($row = $sql->fetch(PDO::FETCH_ASSOC)) {
        echo '<option value="'.$row['id'].|.$row['opcion3'].'" selected="selected">'.$row['opcion3'].'</option>';
    }
 ?>
</select>

在提交时,数据通过ajax发送,我知道如何爆炸并分离这两个值 我用这个脚本:

    $result = $_POST['opcion3'];
    $result_explode = explode('|', $result);
    $result_explode[0];  //this is the id
    $result_explode[1];  //this is the value like: Juzgado X

所以我的问题是:
当值(或id)已经存在于数据库中时,如何在每个选择中进行更新?
我不想再保存它。

0 个答案:

没有答案