2016-02-15 90 views
0

我想从json数组中获取两个变量的值。数组变成ajax,然后解码并“保存”到$jsonarray。然后我尝试从数组中获取volumesymbol变量并将它们插入到我的数据库中。我不明白这$jsonarray->result->{"quote"}->symbol的语法,并尝试过任何时候它的权利,但错误不会消失。获取多维json数组的值

这就是我的数组:

{"query":{"count":1,"created":"2016-02-15T15:11:47Z","lang":"de-DE","results":{"quote":{"symbol":"ZN","Ask":"2.05","Bid":"1.78","Volume":"13214","PercentChange":"+0.56%"}}}} 

有关PHP件:

$jsonString = $_POST['mydata']; 
$jsonarray = json_decode($jsonString[0]['query']); 
if ($stmt = $mysqli->prepare('INSERT INTO volume (stocksymbol, volume, time) VALUES (?, ?, now())')) { 

    /* bind parameters for markers */ 
    $stmt->bind_param("si", $jsonarray->result->{"quote"}->symbol, $jsonarray->result->{"quote"}->Volume); 

    /* execute query */ 
    $stmt->execute(); 

    /* close statement */ 
    $stmt->close(); 
} 
+0

'$ jsonarray-> result->报价 - > symbol' – fusion3k

+1

您应该仔细阅读手册,了解如何调用bind_param':http://php.net/manual/en/mysqli-stmt.bind-param.php – deceze

+0

现在您已经修复了问题的原因......是否还有问题...?! – deceze

回答

2

你确定这条线是正确的? $jsonarray->query->results->...

+0

是的,谢谢你这个问题,我现在试图寻找原因 – Bodoppels

+1

JSON对象只有一个第一级属性:查询。 它不是'{“count”:1,“created”:“today”,“lang”:“AZ”,“results”:{}} –

2

尝试用:

/* bind parameters for markers */ 
    $stmt->bind_param("ss", $jsonarray->result->{"quote"}->symbol, $jsonarray->result->{"quote"}->Volume); 
1

你可以尝试作为一个关联数组,而不是你的解码JSON: $jsonarray = json_decode($jsonString[0]['query']);

在这种情况下,你应该访问结果。假设$_POST['mydata']包含您向我们展示了JSON字符串,试试这个:

$jsonString = $_POST['mydata']; 
$jsonarray = json_decode($jsonString, TRUE); 

这种方式,你可以在一个更加一致的方式访问值:

$stmt->bind_param(
    "si", 
    $jsonarray['query']['results']['quote']['symbol'], 
    $jsonarray['query']['results']['quote']['Volume'] 
);