如何使用PHP从MySQL数据库为整个数据库表生成JSON数组
我想要这种JSON数组, 数据库1所有表如何使用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"}]"}, {
{
{"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)除了db连接之外,这个答案基本上与我指定的相同。由于您有4个不同的阵列,我的可能会占用更少的内存。但由于我的数据库使用特殊的数据库方法,这可能是一个折腾
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);