将存储在mysql表中的json字段解析为php变量

时间:2015-04-22 01:54:37

标签: php mysql json

尝试从传统MySQL数据库中提取变量(我没有构建它)来创建动态php页面。在mysql表上,uploadedImgInfo字段存储为看起来像json的字段。

我的php页面的精简版本如下所示:

<? if (isset($_GET['id'])){
    include "connectionFile.php";
$id = preg_replace('#[^0-9]#i','',$_GET['id']);
$sql=mysql_query("SELECT * FROM survey_584582 WHERE id='$id' LIMIT 1");
$fieldsiteCount=mysql_num_rows($sql);
if($fieldsiteCount>0){ 
    while($row=mysql_fetch_array($sql)){
        $name=$row["fieldSiteName"];
        $lat=$row["lat"];
        $lon=$row["lon"];
        $img = $row['uploadedImgInfo'];

        echo $name; 

    }
} else {
    echo "That field site does not exist";
    exit();
}
} else{
echo "error";
exit();
}
?>

当我

echo $img; 

之后

echo $name; 

我得到了

Fieldsite1

[{"title":"titleText","comment":"commentText","size":"1111","name":"imgName.jpg","filename":"randomNumbers","ext":"jpg" }]

当我使用

echo $name; 
$phpArray = json_decode($img, true);
foreach ($phpArray as $key => $value) { 
    echo "<h2>$key</h2>";
    foreach ($value as $k => $v) { 
        echo "$k | $v <br />"; 
    }
}

我得到了

Fieldsite1

0

title | titleText

comment | commentText

size | 1111

name | imgName.jpg 

filename | randomNumbers

ext | jpg 

如何从uploadedImgInfo mySQL字段中提取php变量的标题,注释和名称?更新我的表很好。

直接通过php调用变量会更好。

2 个答案:

答案 0 :(得分:1)

你实际上不需要迭代数组,你可以json_decode它,抓住第一个数组,然后从那里使用key。

$phpArray = json_decode($img, true);

echo $phpArray[0]['filename'].'.'.$phpArray[0]['ext'];

此外,在php 5.4 +中你实际上可以使用$phpArray = json_decode($img, true)[0];来获取堆栈中的第一个元素,这样你就不需要在每个变量上调用[0]

答案 1 :(得分:1)

这个怎么样

<?php
  $a='';
$b='';
$c='';
foreach ($phpArray as $key => $value) { 
       foreach ($value as $k => $v) { 
        if($k=='title')
              $a=$v;
        if($k=='comment')
              $b=$v;
        if($k=='name')
              $c=$v;   
    }
}

echo $a.'-'.$b.'-'.$c;
?>