1

我有许多与数据库中的一个字段相关的复选框。检查的值被识别并放入字符串中,但该值未保存到数据库中。表名和字段名都正确。有人知道我做错了什么吗?提前谢谢了。

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

我的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] => 数组 ( [0] => 'apple' [1] => 'banana' [2] => 'pear' ) [sbp] => N/A [submit] => Submit )

插入测试(testValues)值('apple','banana','pear')

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

4

3 回答 3

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

您的 SQL 试图将三个值插入一列。

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

于 2013-04-19T22:32:23.613 回答
0

尝试

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

然后当您检索它时unserialize(),再次将其作为数组获取

于 2013-04-19T22:33:53.700 回答
0

如果您尝试这样做:

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

感谢你失败的幸运星。正如昆汀所建议的那样,这是一种不明智的做法。另一方面,我们有这个:

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

这将使您的数据更有用。

于 2013-04-19T22:57:25.963 回答