我遇到了一个问题,我无法弄明白:我有这个多选项,我想把它放到一个数据库字段中(用“,”分隔)......但是我在开头就卡住了:
<?
if(isset($_POST[submit])){
UPDATE MyTable SET `sites` = '$_POST[sites]' WHERE `id` = '$_GET[id]'");
}?>
<select name="sites" multiple="" size="13">
<option value="1">Home</option>
<option value="2">Second</option>
<option value="3">Third</option>
<option value="4">Fourth</option>
<option value="5">Fifth</option>
</select>
问题是:在我的数据库字段中,只有一个数字:我选择的最高数字。例如:我选择“Home”和“Third”,我将得到一个“3”ind我的数据库字段...如何解决这个问题?对此有什么想法吗?
答案 0 :(得分:3)
首先,您需要更改select
<select name="sites[]" ....>
这会将变量$_POST['sites']
填充为数组。
然后你可以做的是
UPDATE MyTable SET `sites` = '" . implode(",",$_POST[sites]) . "' WHERE `id` = '$_GET[id]'"
答案 1 :(得分:2)
您需要更改此
<select name="sites" multiple="" size="13">
到这个
<select name="sites[]" multiple="" size="13">
所以sites
将成为$ _POST的子阵列:
array (size=1)
'sites' =>
array (size=2)
0 => string '2' (length=1)
1 => string '4' (length=1)
然后你可以遍历它,并在你的SQL中使用IN
运算符中的值,或者根据你的需要拆分它们