2017-07-13 43 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