我有许多与数据库中的一个字段相关的复选框。已检查的值将被识别并放入字符串中,但该值不会保存到数据库中。表名和字段名都是正确的。谁会有任何想法我做错了什么?非常感谢提前。
*我理解提供的代码不安全,但请注意,在我将其应用于实际代码之前,它只是用于测试内幕函数。
我的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')
它成功获取已检查的值并将它们放入字符串中,但这些值不会进入数据库字段。
答案 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')
这将使您的数据更有用。