如何将复选框值放入PHP数组中

时间:2015-08-06 16:43:36

标签: javascript php arrays forms

我无法将复选框中的值输入到我的数据库中,它只是显示为'数组'提交到数据库时。

以下是我的代码片段,说明了我要做的事情:

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'] . ";

1 个答案:

答案 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值而不会丢失其类型和   结构