从此数据类型中提取特定值

时间:2013-05-17 16:24:58

标签: php mysql

我正在使用此脚本从数据库中获取数据

$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')。我无法从上面的数据类型中提取它。

4 个答案:

答案 0 :(得分:1)

要阅读JSON中的PHP,请使用

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.