我有多个选择选项框,可以更改MySQL中的“about_demographics”。
例子:
在about_demographics
中,我有值:g01,g02,g03,
如果我试图通过选择框更新这些值,并且我选择了g02,g03,g05,
并取消选择g01,
,则值为g01,g02,g03,g02,g03,g05,
我期望的是:
在about_demographics
中,我有值:g01,g02,g03,
如果我试图通过选择框更新这些值,并且我选择了g02,g03,g05,
并取消选择g01,
,则值为g02,g03,g05,
<select name="work[]" multiple>
<option value="g01">1</option>
<option value="g02">2</option>
<option value="g03">3</option>
<option value="g04">4</option>
<option value="g05">5</option>
</select>
<?php
$work_array = array('g01', 'g02', 'g03', 'g04', 'g05');
foreach ($work_array as $a_work) {
if (in_array($a_work, $_POST['work'])) {
$first_part_all.=$a_work.",";
}
}
$db->Query("UPDATE user_about SET about_demographics = CONCAT(about_demographics,
'$first_part_all') WHERE id = '".$data['id']."'");
?>
最佳答案
我确信这是因为您在不删除以前的值的情况下添加了预先存在的$first_part_all
变量。您应该可以使用implode()
<select name="work[]" multiple>
<option value="g01">1</option>
<option value="g02">2</option>
<option value="g03">3</option>
<option value="g04">4</option>
<option value="g05">5</option>
</select>
<?php
$db->Query("UPDATE user_about SET about_demographics = CONCAT(about_demographics,
'".implode(",",$_POST['work'])."') WHERE id = '".$data['id']."'");
?>
编辑:这个选项仍然需要一个循环,但是它会在开始时清除你的
$first_part_all
变量,并且对现有代码几乎没有改变,以产生预期的结果:<select name="work[]" multiple>
<option value="g01">1</option>
<option value="g02">2</option>
<option value="g03">3</option>
<option value="g04">4</option>
<option value="g05">5</option>
</select>
<?php
$work_array = array('g01', 'g02', 'g03', 'g04', 'g05');
$first_part_all = '';
foreach ($work_array as $a_work) {
if (in_array($a_work, $_POST['work'])) {
$first_part_all.=$a_work.",";
}
}
$db->Query("UPDATE user_about SET about_demographics = CONCAT(about_demographics,
'$first_part_all') WHERE id = '".$data['id']."'");
?>
关于php - 更新值而不删除其他值,并删除PHP CONCAT列中的现有值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49927095/