如何从保存为数组的mysql db获取数据

时间:2014-02-25 12:52:44

标签: php mysql arrays database multiple-columns

我想从我的mysql数据库中获取数据,但是一列是将数据保存为数组... 我如何单独获取值。请建议......

这是db在下拉值中保存数据的方式

{"value":["Authority ","Boards"],"order":["1","2"]}

mysql查询

SELECT a.select FROM sltdb_cddir_fields a WHERE a.categories_id=81

我想要的是将Authrity和Boards作为两个数据值而不是这个数组......

请咨询

 $searchg=$_GET["term"];
// $query=mysql_query("SELECT * FROM sltdb_cddir_content where title like '%".$searchg."%'AND categories_id=81 order by title ASC ");
$query=mysql_query ("SELECT a.select FROM sltdb_cddir_fields a WHERE  a.select like '%".$searchg."%'  a.categories_value_id=19 ");
$json=array();
    while($display=mysql_fetch_array($query)){
         $json[]=array(
                    'value'=> $display["title"],
                    'label'=>$display["title"]
                        );
    }

 echo json_encode($json);
?>

4 个答案:

答案 0 :(得分:0)

Mysqli提供了几种结果类型,mysqli_fetch_all()例如返回一个关联数组。如果您希望以非标准方式格式化数据,那么您可能需要循环遍历它并自己构建数据结构。

$json = array();

while($row = mysqli_fetch_assoc($result)) {
    $json[$row['order']] = $row['value'];
}

return json_encode($json);

在JavaScript中:

$.each(json, function(key, value) {
    html += '<option value="' + key + '">' + value + '</option>';
});

答案 1 :(得分:0)

您可以使用implode将数组更改为字符串,如此

while($display=mysql_fetch_array($query)){
         $json[]=array(
                    'value'=> implode(",", $display["title"]),
                    'label'=>implode(",", $display["title"])
                        );
    }

甚至可以使用serialize()代替implode

答案 2 :(得分:0)

存储的数据格式为JSON格式。因此,您可以使用函数json_decode()获取数据并解析它们; 例如:

    $data = '{"value":["Authority ","Boards"],"order":["1","2"]}';
    $objJSON = json_decode($data);
    $values = $objJSON->value;  //contains "Authority ","Boards"
    $orders = $objJSON->order; //contains "1","2"

答案 3 :(得分:0)

试试这个

使用FIND_IN_SET函数:

SELECT t.*
  FROM YOUR_TABLE t
 WHERE FIND_IN_SET(3, t.ids) > 0