【发布时间】:2017-08-16 02:48:10
【问题描述】:
我正在尝试从外部系统接收 JSON 数据,然后处理并保存到我的本地数据库。当事件触发时,外部系统将以下数据发送到我的系统。
外部系统日志显示:
Log 1: Date/Time: 16 August 2017 11:54:44 AM
Status: Failure
Server: Apache https://blahblah.com/abc/data.php
Status Code: OK
Event Content: [{"field":"_USERNAME","value":""},
{"field":"_PASSWORD","value":""},
{"field":"_TOKEN","value":""},
{"field":"_CODE","value":"L77H4XD6ZA"},
{"field":"_SUBMITTEDDATE","value":"2017.08.16.01.54"},
{"field":"_SUBMITTEDDATEEXT","value":"2017.08.16.01.54.39.610"},
{"field":"_EDITEDDATE","value":"2017.08.16.01.55"},
{"field":"_SEQUENTIALID","value":"39a1cad9-2582-e711-9477-06c7814985cc"},
{"field":"_COMPLETETYPE","value":"Complete"},
{"field":"_LANGUAGE","value":"en"},
{"field":"_TOTALTIME","value":"12.59"},{"field":"_LINKURL","value":"http%3a%2f%2fsurv.blah.com%2ftest3%3fusr%3dL77H4XD6ZA"},
{"field":"GENDER","value":"TEXT%3aFemale%3bVALUE%3a2"},
{"field":"AGE","value":"TEXT%3a40%2b-%2b44%3bVALUE%3a6"},
{"field":"STATE","value":"TEXT%3aVIC%3bVALUE%3a2"},
{"field":"END_CHC","value":"TEXT%3aComplete%3bVALUE%3a2"},
{"field":"D2H","value":""},
{"field":"D2V","value":""},
{"field":"PCODE","value":""},
{"field":"PSTATE","value":""},
{"field":"PREGION","value":""},
{"field":"STATEREGION","value":""},
{"field":"TEST1","value":""}]
所以,在我的 php 文件 (https://blahblah.com/abc/data.php) 我有
$json = file_get_contents('php://input');
$obj = json_decode($json);
我一直在尝试一个 foreach() 循环来尝试获取每个字段和值,然后放入数据库中,例如
foreach($obj as $key => $value)
{
$qry = $conn->prepare('INSERT INTO `key_value`(`db_id`, `rkey`, `rvalue`) VALUES (NULL,$key,$value)');
$qry->execute();
}
但它不起作用,我要么得到有关 foreach 循环的错误,要么在我使用 Postman 或 ARC Chrome API 测试应用程序时,如果我只使用 echoing 或 var_dumping,我会在响应中得到 NULL。
所以,我怀疑我的做法完全错误。
有人可以帮我指路吗?
编辑:我看过Receive JSON POST with PHP 和其他一些人,但工作答案并不清楚。
【问题讨论】: