php - 在 PHP 中解码和访问 json 字典数组

标签 php mysql arrays json

我有以下 json 文件,我正在通过我的移动应用程序将其发送到 PHP,在 PHP 端,我想对其进行解码并将其插入到 mysql 数据库中。

 [{"Address":"Somewhere ",
    "Area":"Somwhe",
    "CreatedBy":null,
    "CreatedDate":"\/Date(1419786831365+0530)\/",
    "Distance":0,
    "EditedDate":"\/Date(-62135596800000+0000)\/",
    "Latitude":12.903999947011471,
    "Longitude":77.607999974861741,
    "Phone1":"80372899",
    "Phone2":"993729927",
    "Response":null,
    "StoreDescriptions":[],
    "StoreName":"First"},
    {"Address":"Addwmsj",
    "Area":"Sbnns",
    "CreatedBy":null,
    "CreatedDate":"\/Date(1419786863657+0530)\/",
    "Distance":0,
    "EditedDate":"\/Date(-62135596800000+0000)\/",
    "Latitude":12.960867136716843,
    "Longitude":77.647689711302519,
    "Phone1":"799268299",
    "Phone2":"68393973738",
    "Response":"Waiting",
    "StoreDescriptions":[{"LongNBQuantity":862,
                            "MeetDate":"\/Date(1419786915048+0530)\/",
                            "MeetSummary":"Meeting",
                            "Response":"Negative",
                            "StoreName":"Ssxond",
                            "id":1
                            },
                            {"LongNBQuantity":8862,
                            "MeetDate":"\/Date(1419786927673+0530)\/",
                            "MeetSummary":"Pjsjsbsj",
                            "Response":"Waiting",
                            "StoreName":"Ssxond",
                            "id":2}],
                            "StoreName":"Ssxond"},
    {"Address":"Sumwhere",
    "Area":"Righthere",
    "CreatedBy":null,
    "CreatedDate":"\/Date(1419953186686+0530)\/",
    "Distance":0,
    "EditedDate":"\/Date(-62135596800000+0000)\/",
    "Latitude":12.903999947011471,
    "Longitude":77.607999974861741,
    "Phone1":"872737288",
    "Phone2":"663838828",
    "Response":null,
    "StoreDescriptions":[],
    "StoreName":"NewEntry"}]

正如我们在此看到的,我有对象数组 [{},{},{}...{}],当这些对象之一具有对象数组时,复杂性会增加,例如 {"abc":"bcd ","storedesc":[{},{},{},....{}]} ,因此与简单的 json 相比,这有点复杂。

我的代码不工作。谁能指导我正确的方向。谢谢

$json = file_get_contents('php://input');
$result = json_decode($json,true);
/*
 Database connection setup done here.
*/

foreach ($result as $key => $value) {
    if($value){
        $sql = "INSERT INTO StoreInfo(name,created_date,edited_date,address,area,ph_num1,ph_num2,response,latitude,longitude) VALUES ($value->StoreName,$value->CreatedDate,'hellyeah',$value->Address,$value->Area,$value->Phone1,$value->Phone2,$value->Response,$value->Longitude,$value->Latitude)";
        if($conn->query($sql) === TRUE){
            echo "New record inserted";
        }
    }
}

最佳答案

有几个原因,这是行不通的。

  • 因为您使用的是 true 标志,所以当您解码 JSON 时,您只会返回数组,正如我所见,您希望在查询中使用对象。

  • 在您的查询中,不要用引号将变量括起来。

所以它会是这样的,但是请看我的注意部分!

$sql = "INSERT INTO StoreInfo (name,created_date,edited_date,address,area,
        ph_num1,ph_num2,response,latitude,longitude) 
        VALUES ('".$value["StoreName"]."','".$value["CreatedDate"]."','hellyeah',
        '".$value["Address"]."','".$value["Area"]."','".$value["Phone1"]."',
        '".$value["Phone2"]."'
        ,'".$value["Response"]."','".$value["Longitude"]."','".$value["Latitude"]."')";

注意

  • 请对来自外部的变量进行转义,或使用准备好的语句来避免 sql 注入(inject)!

关于php - 在 PHP 中解码和访问 json 字典数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27708412/

相关文章:

c++ - 为什么在同一个类中看不到数组?

c++ - 读取数组的第一个元素还是第 4000 个元素更快?

javascript - 将文本区域转换为文件 (HTML JQuery AJAX PHP)

php - 如何创建包含 WordPress 插件文件的 zip 文件安装程序?

php - PayPal折扣优惠券集成

mysql - 从数据库中获取用户权限 - 概念问题

c# - ASP.NET C# MySql 选择和更新表单

php - 使用 PHP 访问 Windows 共享

mysql - 创建更新后触发器后如何修复错误 1054

javascript - 如何获取 localStorage 中变量的数组长度