选择列表作为数组变量保存到MySQL后无法重新保存为未选中

时间:2014-10-16 23:15:05

标签: php mysql arrays forms select

我有一个选择列表,用户可以在其中选择一个或多个选项。我使用数组在表单中存储这些选择,POST将它们作为字符串写入MySQL数据库,我稍后在需要时将其爆炸。

除了一件事之外,这很有效。一旦记录将一个或多个选择保存到db,我就无法重新保存选择的无。

<p><input name="var[]" type="checkbox" value="1">One</p>
<p><input name="var[]" type="checkbox" value="2">Two</p>
<p><input name="var[]" type="checkbox" value="3">Three</p>

在PHP中,$ _POST ['var']被破坏并保存为字符串“1,2,3”或“1,3”。

当我取消选中所有复选框并提交表单时,PHP $ _POST ['var']不存在,因为它没有值(没有选中)所以它不会过度写入db列,以及什么都没有......

这是CMS / CRUD系统的一部分,因此在PHP管理中添加条件不是理想的路径。 Select表单可以/将在不同的应用程序中具有不同的名称。

1 个答案:

答案 0 :(得分:1)

我看到它做过这样的事情。我知道它有效,但我不能100%确定它是&#34;正确&#34;这样做的方式......或者即使它能满足您的需求。如果你对sql引擎没有太大的灵活性(或者不想搞砸它,我不会责怪你......)这是一个快速而又脏的方法来填充数组空值。如果您的sql引擎不支持写入空白,您将需要了解如何编写&#34;空&#34;在你的桌子上找到。有些人使用var[1] => '~null~'var[1] => 'NULL'等内容,引擎会将该字符串识别为&#34;为空&#34;。

<form>
    <input name="var[1]" type="hidden" value="" />
    <p><input name="var[1]" type="checkbox" value="1">One</p>
    <input name="var[2]" type="hidden" value="" />
    <p><input name="var[2]" type="checkbox" value="2">Two</p>
    <input name="var[3]" type="hidden" value="" />
    <p><input name="var[3]" type="checkbox" value="3">Three</p>
    <input type="submit" name="submit" />
</form>

<强>结果

Array
(
    [var] => Array
        (
            [1] => 1
            [2] => 
            [3] => 3
        )

    [submit] => Submit
)