[英]Update MySQL with multiple data
我想用多選更新表。 多選具有MySQL數據。 如果一個員工有1家公司,但它有2家或更多,則它沒有更新,這是正常的。
我在選擇菜單中顯示當前的公司。 因此,Employee#1有2個公司,但是如果我選擇另一個2,它並沒有更新。我該如何解決? employee_company是我的相關表。
<select size="10" name="company[]" id="company" class="form-control" multiple>
<?php
$query2 = "SELECT * FROM company GROUP BY company_id";
$result2 = mysqli_query($connect, $query2);
while($row2 = mysqli_fetch_array($result2)){
?>
<option value="<?php echo $row2['company_id'];?>"><?php echo $row2['name'];?></option>
<?php }?>
</select>
$name = mysqli_real_escape_string($connect, $_POST["name"]);
$address = mysqli_real_escape_string($connect, $_POST["address"]);
$company = mysqli_real_escape_string($connect, $_POST["company"]);
$id = $_POST["employee_id"];
if($id != ''){
foreach($_POST['company'] as $comp){
$query = "
UPDATE employee t1
LEFT JOIN employee_company t2 ON (t1.employee_id = t2.employee_id)
SET t1.name='$name',
t1.address='$address',
t2.employee_id='$id',
t2.company_id='$comp'
WHERE t1.employee_id='$id'";
}
$message = 'Data Updated';
}
else{
}
if(mysqli_query($connect, $query)){
$output .= '<label class="text-success">' . $message . '</label>';
}
echo $output;
company[]
是一個數組-如果要將值作為字符串,則必須IMPLODE。
$company = mysqli_real_escape_string($connect, implode(",",$_POST["company"]));
我的建議是修改數據模型並對其進行規范化-不要將公司ID作為字符串放在company_id
列中,而應使用表格employee_companies
來保存員工與零個/一個/許多公司之間的關聯。
我的意思是這樣的
"START TRANSACTION"
"UPDATE employee SET name = '$name', address = '$address' WHERE employee_id = $id"
"DELETE FROM employee_company WHERE employee_id = $id"
if(is_array($_POST["company"]))
{
$values = Array();
foreach($_POST["company"] as $c_id) $values[] = "($id, $c_id)";
"INSERT INTO employee_company(employee_id, company_id) VALUES ".implode(",", $values)
}
"COMMIT"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.