我无法将复选框中的值输入到我的数据库中,它只是显示为'数组'提交到数据库时。
以下是我的代码片段,说明了我要做的事情:
HTML:
<input type="checkbox" name="commentType[]" id="Streams_Wetlands" value="Streams_Wetlands">
<input type="checkbox" name="commentType[]" id="Vegetation" value="Vegetation">
JS:
var commentType = new Array();
$('input:checkbox[name="commentType[]"]').each(function() {
commentType.push($(this).val());
});
postData( "php/add1.php",{
CommentAddress1: commentAddress1,
UserAddress1: userAddress1,
CommentType1: commentType,
CommentTypeOther1: commentTypeOther1
});
PHP:
$q .= " . $_POST['UserAddress1'] . "','" . $_POST['CommentType1'] . "','" . $_POST['CommentTypeOther1'] . "','" . $_POST['CommentAddress1'] . ";
答案 0 :(得分:0)
JSON在将数组存储到数据库之前对其进行编码。
var commentType = new Array();
$('input:checkbox[name="commentType[]"]').each(function() {
commentType.push($(this).val());
});
var comments = JSON.stringify(commentType);
然后将json字符串存储到数据库中。
像往常一样,您将运行查询以从数据库中获取数据。由于您将其作为json字符串存储到数据库中,因此不能将其用作数组。要将json字符串转换回数组,请使用json_decode()
。
$CommentsArray = json_decode($commentJsonStringFromDB, true);
为什么我们这样做了?因为我们必须在将数组存储到数据库之前将其序列化,为什么?因为通过序列化,我们:
生成值的可存储表示。这很有用 存储或传递PHP值而不会丢失其类型和 结构