我有一个非常简单的代码来解码json结果:
码
$returnSK = returnSeoKicksLinks($s[0]);
echo "SeoKicks: " . $returnSK;
$seoKicks = json_decode($returnSK, true);
if (is_array($seoKicks) || is_object($seoKicks))
{
foreach ($seoKicks as $key => $val2)
{
$backlinks2 = $val2['UrlFrom'];
echo $backlinks2;
// backlink query and insertion
//$b = $c->query("INSERT INTO `backlinks` (`backlink_id`,`backlink_url`,`backlink_mother_url`,`backlink_date`,`backlink_from`) VALUES ('','".$backlinks2."','".$s[0]."','seokicks',NOW())");
}
}
JSON结果:
{
"Results": [
{
"Links": [
{
"Anchor": "guaranteed payday loan",
"nofollow": "1",
"UrlTo": "http:\/\/www.site.co.uk\/"
}
],
"Index": 1,
"IP": "67.139.134.215",
"UrlFrom": "http:\/\/menomena.com\/?p=240",
"DomainRank": "7"
},
{
"Links": [
{
"nofollow": "0",
"UrlTo": "http:\/\/www.site.co.uk\/",
"Anchor": "Cash Till Payday Loan"
}
],
"DomainRank": "6",
"IP": "67.222.22.156",
"Index": 2,
"UrlFrom": "http:\/\/www.aussi.org\/business\/financial-services\/loans\/"
},
{
"DomainRank": "6",
"UrlFrom": "http:\/\/www.loanranks.com\/improving-your-chances-of-receiving-payday-loans",
"Index": 3,
"IP": "173.254.28.69",
"Links": [
{
"Anchor": "guaranteed payday loans",
"nofollow": "0",
"UrlTo": "http:\/\/www.site.co.uk\/"
}
]
}
],
"Overview": {
"domainpop": "29",
"firstresultposition": 1,
"totalresultsreturned": 3,
"linkpop": "37",
"netpop": "27",
"ippop": "29"
}
}
我试图获得" UrlFrom"价值,但它是空白,我在这里缺少什么?
答案 0 :(得分:0)
你需要告诉PHP查看“Results”数组,如下所示:
foreach ($seoKicks['Results'] as $key => $val2)
所以你的代码会变成:
$seoKicks = json_decode($returnSK, true);
if (is_array($seoKicks) || is_object($seoKicks))
{
foreach ($seoKicks['Results'] as $key => $val2)
{
$backlinks2 = $val2['UrlFrom'];
echo $backlinks2;
// backlink query and insertion
//$b = $c->query("INSERT INTO `backlinks` (`backlink_id`,`backlink_url`,`backlink_mother_url`,`backlink_date`,`backlink_from`) VALUES ('','".$backlinks2."','".$s[0]."','seokicks',NOW())");
}
}
在取消注释查询部分之前,请将您的查询更改为而不是将值连接到SQL中。为避免SQL injection的风险,您应该使用prepared statements代替,将动态值绑定到它。
答案 1 :(得分:0)
如果没有代码的第一部分,则无法执行测试以找出问题所在。但是,使用此代码,我可以打印UrlFrom
字段的值(在POST请求中传递JSON):
$jsonPost = file_get_contents('php://input');
$decodedJson = json_decode($jsonPost);
foreach($decodedJson->Results as $key => $value) {
var_dump($value->UrlFrom);
}