多选数据库字段

时间:2013-06-14 09:43:28

标签: php html mysql select

我遇到了一个问题,我无法弄明白:我有这个多选项,我想把它放到一个数据库字段中(用“,”分隔)......但是我在开头就卡住了:

<?
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我的数据库字段...如何解决这个问题?对此有什么想法吗?

2 个答案:

答案 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运算符中的值,或者根据你的需要拆分它们