2017-07-13 99 views
0

我的數據庫值爲JSON。我想要將值賦給像「name」這樣的鍵。我怎樣才能讓他們在PHP?PDO獲取數據後訪問數組中的json對象

<?php 

include('db.class.php'); 

$sql = "select * from users where 1"; 

$obj = new db(); 
$stmt = $obj->conn->prepare($sql); 
$stmt->execute(); 

$res = $stmt->fetchAll(PDO::FETCH_ASSOC); 

$json = json_encode($res,true); 

echo $big = $json->name; // ??? ERROR 

我的輸出是

[ 
    {"id":"1", 
    "name":"test1", 
    "username":"abc", 
    "email":"[email protected]", 
    "phone":"333" 
    }, 
    {"id":"2", 
    "name":"test2", 
    "username":"def", 
    "email":"[email protected]", 
    "phone":"23232"} 
] 
+0

'$ json'是一個字符串,而不是一個對象。結果中有多行,你期望'$ json-> name'返回哪一行? – Barmar

+0

你可以發佈'echo'

' . print_r($res, true) . '
';'的輸出,所以我們可以看到返回結果的結構究竟是什麼 – codtex

+0

執行'$ res [0] ['name']' – RiggsFolly

回答

0

首先你解碼傑森數組,然後獲取結果

$data= json_decode($json); 

echo $data[0]->name; 

如果您需要了解jason_decode更多信息,然後讀取manual

+0

'$ data [0] - > name ' – Barmar

+0

@Barmar謝謝............. –

+0

做'$ res [0] ['name']'會不會更簡單'並且用JSON剪掉所有這些不必要的跳舞 – RiggsFolly

2

你不需要使用json_encode()$res是結果數組,您可以從中獲取名稱。

echo $res[0]['name']; 

注意的$res元素是關聯數組,而不是對象,因爲你用PDO::FETCH_ASSOC

+0

最後一些一個人同意我的觀點 – RiggsFolly