在PHP中解析Json数组

时间:2014-12-09 18:19:49

标签: php android parsing arrays

大家好我正面临一个问题。 我从android.i接收数组想要解析数组然后将其存储到mysql数据库但代码不起作用。我的代码如下。谢谢。

String timeArray;
JSONArray jss=new JSONArray();
        for(int i=0;i<time.size();i++){
            jss.put(time.get(i));
        }
    timeArray=jss.toString();

我的服务器端代码是

$myArray=$_POST['items'];// here i receive ["3:02","9:12","12:20"]

$myArray1=json_decode($myArray);

   foreach($myArray1 as $row){

        $sql="INSERT INTO `time`(`time`) VALUES('$row')";
        mysql_query($sql) or die("Problem occured while inserting");

   }

2 个答案:

答案 0 :(得分:0)

如果您希望json_encode返回一个数组,则需要调用该函数,并将可选的assoc参数设置为true

$myArray1=json_decode($myArray, true);

否则json_decode将返回一个对象而不是一个数组。有关详细信息,请参阅PHP manual for json_decode

编辑:您需要发布有关不起作用的更多详细信息,包括错误消息,以获取帮助。您的代码中有太多变量可供我查明问题。运行以下代码:

$myArray1=json_decode('["3:02","9:12","12:20"]', true);
foreach($myArray1 as $row){
    echo "INSERT INTO `time`(`time`) VALUES('$row');\n";
}

输出:

INSERT INTO `time`(`time`) VALUES('3:02');
INSERT INTO `time`(`time`) VALUES('9:12');
INSERT INTO `time`(`time`) VALUES('12:20');

因此,您的问题可能实际上并不是由将JSON数据解析为PHP数组引起的。我要检查的第一件事是,在尝试插入查询之前,您是否确实创建了与数据库的成功连接。

答案 1 :(得分:0)

您所要做的就是:

$myArray=json_decode($_POST['items']);
foreach($myArray as $time){
    $sql="INSERT INTO `time`(`time`) VALUES('$time')";
    mysql_query($sql) or die("Problem occured while inserting");
}

通过转义帖子值或升级到mysqli预备语句来避免SQL注入。

编辑:

@arsalanqamar you said it works when hardcoded in your comments这意味着您没有收到JSON

你的POST对值应如下所示:

List<NameValuePair> params = new ArrayList<NameValuePair>(); 
params.add(new BasicNameValuePair("items", timeArray));