我需要知道如何像标题一样进行查询。
我在一个查询中已经有了这个插入/更新...
但在这种情况下,我有一个需要多次选择的表单,我需要插入(如果项目已在数据库中,则更新)。
为此,我需要为每个选择输入提供两个值:
这是插入/更新脚本:
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)已经存在于数据库中时,如何在每个选择中进行更新?
我不想再保存它。