2016-02-15 93 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'] 
);