如何使用PHP从MySQL数据库为整个数据库表生成JSON数组

时间:2015-06-18 10:59:05

标签: php mysql arrays json

我想要这种JSON数组, database1所有表

{
    {"table1":"[{"key11":"val11"},{"key12":"val12"},{"key13":"val13"}]"},
    {"table2":"[{"key21":"val21"},{"key22":"val22"},{"key23":"val23"}]"},
    {"table3":"[{"key31":"val31"},{"key32":"val32"},{"key33":"val33"}]"},
    {"table4":"[{"key41":"val41"},{"key42":"val42"},{"key43":"val43"}]"},
    {"table5":"[{"key51":"val51"},{"key52":"val52"},{"key53":"val53"}]"},
}

这个波纹管代码将单个数据库表转换为JSON数组,但我想将整个数据库表转换为JSON数组

    $return_arr = array();
    $fetch = mysql_query("SELECT * FROM table1");   
    while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
        $row_array['val2'] = $row['val1'];
        $row_array['val2'] = $row['val2'];
        $row_array['val3'] = $row['val3'];      
        array_push($return_arr,$row_array);
    }   
    echo json_encode($return_arr);
任何人都会帮助我。

3 个答案:

答案 0 :(得分:0)

遍历所有表,您可以使用该查询来获取所有表。

select * from information_schema.tables

您仍然需要在表格中选择所有结果。

答案 1 :(得分:0)

类似的东西:

$db='recipes';
$tables=$db->query('SHOW TABLES IN '.$db, O_ARRAY);
foreach($tables as $n=>$v){
    $table=$v['Tables_in_'.$db];
    $array=$db->query("SELECT * FROM $table");
    $data[$table]=$array;
}
echo '<pre>';
echo json_encode($data);

这对大数据来说会非常耗费内存!您可以为不需要的字段添加一些过滤器,或者需要跳过的数据库特定字段或将值转换到另一个地方。

答案 2 :(得分:0)

这是上述问题更改数据库名称的答案,只有所有表和表记录都以JSON数组格式给出。

    mysql_connect('localhost','root','');
    mysql_select_db('database');
    $db='database'; 

    $return_arr = array();
    $return_arr1 = array();
    $return_arr2 = array(); 
    $return_arr3 = array();
    $result = mysql_query("SHOW TABLES IN ".$db); 
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        array_push($return_arr,$row);
    }
    foreach($return_arr as $key => $value)
    {
        $table=$value['Tables_in_'.$db];
        $array1=mysql_query("SELECT * FROM $table");        
        while ($row1 = mysql_fetch_array($array1, MYSQL_ASSOC)) 
        {
            array_push($return_arr3,$row1);
        }       
            $return_arr1[$table]=$return_arr3;
            unset($return_arr3);
            $return_arr3 =array();
    }
    echo '<pre>';
    print_r($return_arr1);