Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP从MySQL数据库为整个数据库表生成JSON数组_Php_Mysql_Arrays_Json - Fatal编程技术网

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

如何使用PHP从MySQL数据库为整个数据库表生成JSON数组,php,mysql,arrays,json,Php,Mysql,Arrays,Json,我想要这种JSON数组, 数据库1所有表 { {"table1":"[{"key11":"val11"},{"key12":"val12"},{"key13":"val13"}]"}, {"table2":"[{"key21":"val21"},{"key22":"val22"},{"key23":"val23"}]"}, {"table3":"[{"key31":"val31"},{"key32":"val32"},{"key33":"val33"}]"}, {

我想要这种JSON数组, 数据库1所有表

{
    {"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);

任何人都可以帮助我。

迭代所有表,您可以使用该查询获取所有表

select * from information_schema.tables
您仍然需要选择表中的所有结果。

类似以下内容:

$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);
$db='recipes';
$tables=$db->query('SHOW tables IN.$db,O_数组);
foreach($n=>v的表格){
$table=$v['Tables\u in.$db];
$array=$db->query(“从$table中选择*);
$data[$table]=$array;
}
回声';
echo json_编码($data);

在大数据上,这将是非常占用内存的!您可以为不需要的字段、需要跳过的特定于数据库的字段或转换到其他位置的值添加一些筛选器。

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

mysql\u connect('localhost','root','');
mysql_select_db(“数据库”);
$db='database';
$return_arr=array();
$return_arr1=array();
$return_arr2=array();
$return_arr3=array();
$result=mysql\u查询(“在“..$db”中显示表);
而($row=mysql\u fetch\u array($result,mysql\u ASSOC)){
数组\u push($return\u arr,$row);
}
foreach($return\u arr as$key=>$value)
{
$table=$value['Tables\U in.$db];
$array1=mysql_查询(“从$table中选择*);
而($row1=mysql\u fetch\u数组($array1,mysql\u ASSOC))
{
数组推送($return\u arr3,$row1);
}       
$return\u arr1[$table]=$return\u arr3;
未结算($return\u arr3);
$return_arr3=array();
}
回声';
打印($return\u arr1);

您的意思是整个数据库或特定表是整个数据库,我有特定表的代码。我想将特定数据库和所有表转换为上述格式,请回答。您只需要表名或表中的完整项。我需要表中的完整项和单个数据库中的所有表,请回答。是的,我需要这种格式,但我可以运行空页显示吗?请简化为WAMP服务器<代码>mysql\u connect('localhost','root','');mysql_select_db(“配方”);$db='recipes';$tables=mysql_查询('SHOW tables IN.$db');foreach($v形式的表){echo$table=$v['tables_in.'.$db];$array=mysql_查询(“SELECT*FROM$table”);$data[$table]=$array;}echo';echo json_编码($data)显示输出的代码为空,请更正我的代码。
mysql\u connect('localhost','root','');mysql_select_db(“配方”)$db='recipes'$tables=mysql\u query('SHOW tables IN.$db);foreach($v形式的表){echo$table=$v['tables_in.'.$db];$array=mysql_查询(“SELECT*FROM$table”);$data[$table]=$array;}echo';echo json_编码($data)    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);