将多个复选框保存到一个数据库字段中

时间:2013-04-19 22:28:33

标签: php mysql sql html5 checkbox

我有许多与数据库中的一个字段相关的复选框。已检查的值将被识别并放入字符串中,但该值不会保存到数据库中。表名和字段名都是正确的。谁会有任何想法我做错了什么?非常感谢提前。

*我理解提供的代码不安全,但请注意,在我将其应用于实际代码之前,它只是用于测试内幕函数。

我的HTML代码是:

<tr>
    <td>
        <input type="checkbox" name="test[]" value="'apple'">apple<br>
        <input type="checkbox" name="test[]" value="'banana'">banana<br>
        <input type="checkbox" name="test[]" value="'pear'">pear<br>
        <input type="checkbox" name="test[]" value="'grapes'">grapes<br>
        <input type="checkbox" name="test[]" value="'pineapple'">pineapple<br>
        <input type="checkbox" name="test[]" value="'strawberries'">strawberries
    </td>
</tr>

我的PHP代码是:

print_r($_POST);
session_start();

$p_test = $_POST["test"];
$in = implode(',', $p_test);

include ("dbConnect.php");

$dbQuery = "INSERT into test(testValues) VALUES($in)";
echo $dbQuery;
$result = mysql_query($dbQuery);

$ _POST和$ dbQuery将被打印到屏幕上:

  

数组([test] =&gt;数组([0] =&gt;'apple'[1] =&gt;'banana'[2] =&gt;'梨')[sbp] =&gt; N / A [提交] =&gt;提交)

     

INSERT into test(testValues)VALUES('apple','banana','pear')

它成功获取已检查的值并将它们放入字符串中,但这些值不会进入数据库字段。

3 个答案:

答案 0 :(得分:1)

INSERT into test(testValues) VALUES('apple','banana','pear')

您的SQL正在尝试将三个值插入一列。

不确定为什么您的HTML包含引号但无论如何都需要转义它们。切换到PDO(不推荐使用mysql_*函数)并使用参数化查询。这样他们就会自动逃脱。

答案 1 :(得分:0)

尝试

$dbQuery = "INSERT into test(testValues) VALUES(". serialize($in).")";

然后当你检索它时,使用unserialize()再次将其作为数组

答案 2 :(得分:0)

如果您尝试这样做:

insert into test(testValues)
values
('apple,banana,pear')
谢谢你的幸运星,你失败了。正如昆汀所说,这是一种不明智的做法。另一方面,我们有这个:

insert into test(testValues)
values
('apple')
, ('banana')
, ('pear')

这将使您的数据更有用。