【发布时间】:2014-11-19 04:04:01
【问题描述】:
我有一个 PHP 文件,可以将来自 JSON 响应的数据插入 MySQL 表。代码如下所示:
$jsondata = json_decode($result);
$results = $jsondata->results;
$insert = $con->prepare('INSERT INTO History (URL, Product, Price, Status) VALUES(?, ?, ?, ?) ');
foreach($results as $val) {
$insert->bind_param('ssss', $val->title, $val->title, $val->price, $val->{'status/_text'});
// //echo $val->status;
// echo $val->{'status/_title'};
$insert->execute();
不幸的是,这仅在我的 JSON 响应中有 1 项返回时才有效。如果我有两个,对于除价格之外的所有值,它只是将单词 ARRAY 插入到我的 MySQL 表中。
这是一个带有 1 个项目的 JSON 响应示例:
{
"offset": 0,
"results": [
{
"status/_text": "Available",
"status/_source": "itemID.2251694279/example333632279/",
"status/_title": "Available",
"title": "Product 1",
"status": "http://www.example.comitemID.2251694279/example333632279/"
}
],
"cookies": [
"SESSION=\""
],
"GUID": "123123123",
"GUID2": "123123123",
"pageUrl": "http://www.example.com/279"
}
这是一个包含 2 个项目的 JSON 响应示例:
{
"offset": 0,
"results": [
{
"status/_text": [
"Available",
"Available"
],
"price": "$39.29",
"status/_source": [
"itemID.30227999279/example333632279/",
"itemID.30201279279/example333632279/"
],
"status/_title": [
"Available",
"Available"
],
"title": [
"Product 1",
"Product 2"
],
"status": [
"http://www.example.comitemID.30227999279/example333632279/",
"http://www.example.comitemID.30201279279/example333632279/"
]
}
],
"cookies": [
"SESSION=\"m\";Port=\"20\"",
"X-AK-Origin-Instance=\"1\";Path=\"/\";Domain=\"www.example.com\";Port=\"20\""
],
"GUID": "123123123",
"GUID2": "123123123",
"pageUrl": "http://www.example.com/279"
}
任何提示将不胜感激!
【问题讨论】:
-
您需要从一个循环开始,可能最简单的方法是将该 JSON 排序为一个数组,其中包含具有简单属性的子数组,而不是将它们全部包含在列/属性名称中。然后循环它并执行插入,或者更好的是,创建一个包含多个语句的插入。
-
价格总是单一的元素吗?如果有多个字段,其他字段的长度是否都相同?
-
价格可以不止一个 - 除了价格之外,其他字段可能相同