我正在使用此脚本从数据库中获取数据
$sql = "SELECT * FROM items WHERE catid = 1";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
echo $row['extra_fields'];
}
输出结果为:
[{"id":"1","value":"johndoe"},{"id":"2","value":"marydoe"}]
我想仅提取/打印与"id":"1"
相对应的值(在本例中为'johndoe')。我无法从上面的数据类型中提取它。
答案 0 :(得分:1)
while($row = mysql_fetch_array($result)){
$array = json_decode($row['extra_fields'];
// Do something with $array['id']
}
您是否意识到您可以直接在MySQL中获取该数据?
SELECT value FROM items WHERE id = 2;
修改强>
基本上您的查询是
SELECT 以逗号分隔的列名或全明星,只使用您真正需要的节省带宽,例如: SELECT id, value
FROM 表名,例如FROM mytable
WHERE columnname =所需的值,例如WHERE id = 2
您只想查询所需行中的必需列。想象一下,有一天你每次想要获得一个id时都需要解析100万用户......:)
答案 1 :(得分:0)
输出为JSON。使用PHP的json_decode
函数。
while($row = mysql_fetch_array($result)){
$array = json_decode($row['extra_fields']);
foreach($array AS $item) {
echo $item['id'];
}
}
答案 2 :(得分:0)
目前,这是符合我需求的代码:
while($row = mysql_fetch_array($result)){
$array = json_decode($row['extra_fields']);
$value = $array[0]->value;
}
答案 3 :(得分:-1)
您应该在mysql查询部分中执行此操作。例如,在查询中设置ID = 1.