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

I'm using this script to get data from a database

$sql = "SELECT * FROM items WHERE catid = 1";
$result = mysql_query($sql);

while($row = mysql_fetch_array($result)){
  echo $row['extra_fields'];
}

The output is:

[{"id":"1","value":"johndoe"},{"id":"2","value":"marydoe"}]

I want to extract/print only the value corresponding to "id":"1" (that in this case is 'johndoe'). I'm not able to extract it from the above data type.

Currently this is the code that fits my needs:

while($row = mysql_fetch_array($result)){
  $array = json_decode($row['extra_fields']); 
  $value = $array[0]->value;
}

You should do it in the mysql query part. For example, set the ID = 1 in the query.

The output is JSON. Use PHP's json_decode function.

while($row = mysql_fetch_array($result)){
  $array = json_decode($row['extra_fields']);
  foreach($array AS $item) {
    echo $item['id'];
   }
}

To read JSON in PHP use

while($row = mysql_fetch_array($result)){
  $array = json_decode($row['extra_fields'];
  // Do something with $array['id'] 
}

Did you realise you can directly go for that data in MySQL?

SELECT value FROM items WHERE id = 2;

edit:

Basically your query is

SELECT comma-separated column names or star for all, use only what you really need to save bandwidth, e.g. SELECT id, value

FROM table-name, e.g. FROM mytable

WHERE columnname = desired value, e.g. WHERE id = 2

You want to query only the required columns in the required rows. Imagine one day you would have to parse 1 million users every time you want to get an id... :)