如何使用psql数据库中的数据创建分层json?

时间:2013-04-17 22:04:37

标签: php json hierarchical-data psql

我正在使用php连接到我的psql数据库,并有一些初始代码连接到数据库,访问表并将列设置为数组等。但是,我一直在努力将我的数据转换为所需数据我的代码已在运行的格式。我的输入是Json分层数据形式,如下所示。

function getData() {
    return {
 "name": "data",
 "children": [
  {
   "name": "America",
   "children": [
    {
     "name": "MA",
     "children": [
      {"name": "Westborough", "order": 30},
      {"name": "Southborough", "order":20}
     ]
    },
    {
     "name": "NH",
     "children": [
      {"name": "Nashua", "order": 12}
     ]
    },
    {
     "name": "CA",
     "children": [
      {"name": "SanFransico", "order": 17}
     ]
    }
   ]
}
]
};

这是我目前使用php编写的代码:

<?php

   // attempt a connection
 $dbh = pg_connect("host=localhost dbname=sample user=postgres");
 if (!$dbh) {
     die("Error in connection: " . pg_last_error());
 }       

 // execute query
 $sql = "SELECT * FROM dataset";
 $result = pg_query($dbh, $sql);
 if (!$result) {
     die("Error in SQL query: " . pg_last_error());
 }       

//Sets the column at 1 to an array
 $arr = pg_fetch_all_columns($result, 1);


 // free memory
 pg_free_result($result);       

 // close connection
 pg_close($dbh);

?>

这是数据库表的格式

Database table

提前致谢:)

1 个答案:

答案 0 :(得分:0)

我只是为你编码一个圆顶。你需要检查你的

$dbh = pg_connect("host=localhost dbname=sample user=postgres");

$ret = array();
$ret['name'] = 'data';
$ret['children'] = get_chilren($dbh,0);

return  json_encode($ret);


while ($line = pg_fetch_array($result)) {

}


function get_chilren($dbh,$parentid){
  var $cret = array();
  $sql = "select * from database where parentid=".$parentid
  $cresult = pg_query($dbh, $sql);
  if (!$cresult) {
    echo "An error occured.\n";
    exit;
  }
  while($chil = pg_fetch_array($cresult)){ // fetch each row
    $cret['name'] = $chil['name'];
    $cc = get_chilren($dbh,$chil['id']);
    if(is_array($cc)) 
    {//when it hava a child
      $cret['children'] = $cc;
    }else{ //not hava
      $cret['order'] = $chil['order'];
    }
  }
  return $cret;
}