0

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

$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

4 回答 4

1

要在PHP中读取JSON ,请使用

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 id, value

FROM表名,例如FROM mytable

WHERE列名 = 所需值,例如WHERE id = 2

您只想查询所需行中的所需列。想象一下,有一天你每次想要获得一个 id 时都必须解析 100 万个用户...... :)

于 2013-05-17T16:32:38.527 回答
0

输出为JSON。使用 PHP 的json_decode函数。

while($row = mysql_fetch_array($result)){
  $array = json_decode($row['extra_fields']);
  foreach($array AS $item) {
    echo $item['id'];
   }
}
于 2013-05-17T16:27:35.747 回答
0

目前这是适合我需要的代码:

while($row = mysql_fetch_array($result)){
  $array = json_decode($row['extra_fields']); 
  $value = $array[0]->value;
}
于 2013-05-20T16:52:32.273 回答
-1

您应该在 mysql 查询部分执行此操作。例如,在查询中设置 ID = 1。

于 2013-05-17T16:27:26.817 回答