【问题标题】:PHP: How to parse JSON dataPHP:如何解析 JSON 数据
【发布时间】:2018-03-20 17:42:04
【问题描述】:

我正在尝试将 JSON 数据发送到 PHP 服务器,但我可以理解如何在 PHP 中解析我的 JSON 并在 Mysql 数据库中插入值。

这是我的 JSON 数据的外观

 {"reps_list":{"selected_subcategory_id":[0,1,2]}}

这是我的 PHP 代码:

$reps_list = $_POST['reps_list'];
$reps_list= json_decode($reps_list,TRUE);

 for($i = 0; $i <= count($array['reps_list']['selected_subcategory_id']); $i++){
mysqli_query($conn, "INSERT INTO reps VALUES(NULL, '".$array['reps_list']['selected_subcategory_id'][i]."', 1, 1 )");

}

有什么建议吗?

【问题讨论】:

  • 它不是有效的 json,发给你有效的 json
  • 如果那是有效的 JSON 数据,那么你会使用 json_decode,但不是这样你就不能。
  • 我已经编辑了我的问题并粘贴了 VALID json ))
  • 你有一个 SQL 注入漏洞。您应该在查询中使用参数,而不是在 SQL 字符串中插入变量。 json_decode() 不保护值。

标签: php mysql json parsing


【解决方案1】:

为您的 valid json 尝试这样,使用带有第二个参数 truejson_decode 将字符串解码为 array 以使其成为数组,然后将其视为在数据库查询中使用它之前的数组。

$array = json_decode('{"reps_list":{"selected_subcategory_id":[0,1,2]}}',1);
echo "Main Array after json string decode \n\n";
print_r($array); 
echo "\n\n";
echo "Access selected_subcategory_id \n\n";
print_r($array['reps_list']['selected_subcategory_id']);

输出:

主数组 json字符串解码后

Array
(
    [reps_list] => Array
        (
            [selected_subcategory_id] => Array
                (
                    [0] => 0
                    [1] => 1
                    [2] => 2
                )

        )

)

访问selected_subcategory_id

Array
(
    [0] => 0
    [1] => 1
    [2] => 2
)

演示https://eval.in/975261

【讨论】:

    【解决方案2】:

    由于您已更新您的帖子并打算将INSERT 放入数据库中,因此以下是可行的:

    $reps_list = $_POST['reps_list'];
    $json = json_decode($reps_list,TRUE);
    
    $arr = $json['reps_list']['selected_subcategory_id'];
    
    $insertWorkout = $mysqli->prepare("INSERT INTO reps (column1, column2, column3) VALUES (?, ?, ?)");
    $insertWorkout->bind_param("iii", $arr[0], $arr[1], $arr[2]); // iii means they are all integers
    $insertWorkout->execute();
    

    【讨论】:

    • 感谢您的回答,更新了我的问题,我想在 LOOP 中插入数据,但是当我运行代码时,会抛出这样的异常Undefined index: i
    【解决方案3】:

    你可以使用

    foreach($reps_list['selected_subcategory_id'] as $key => $value){
    
    mysqli_query($conn, "INSERT INTO reps VALUES(NULL, '".$value."', 1, 1 )");
    
    }
    

    【讨论】:

    • 抛出这个异常PHP Parse error: syntax error, unexpected '$key' (T_VARIABLE) in /home/asata/public_html/etsports/data/add_reps.php on line 28
    • 你可以试试
    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    相关资源
    最近更新 更多