如何从PHP转储整个MySQL内容?

How to dump whole MySQL contents from PHP?

提问人:Luchian Grigore 提问时间:1/23/2012 更新时间:1/23/2012 访问量:134

问:

有没有一种干净的方法(没有硬编码)可以使用PHP将数据库的所有内容直接转储到HTML?

我不想对每个表运行查询,然后逐步检查结果,输出结果。我需要它进行测试,所以桌子不是那么大。

有什么提示吗?

我希望直接在我的 php 文件中完成此操作,其余的测试都在那里进行,以便我可以与示例进行比较。我需要自动执行此操作,因此无法真正使用PHPMyAdmin之类的工具。

PHP 的MySQL

评论

0赞 Bojangles 1/23/2012
或者管理员:-)

答:

1赞 Ben D 1/23/2012 #1

像这样的东西应该起作用:

<?php

function dump_mysql_results($mysql_table){
    $query = mysql_query("SELECT * FROM `$table` WHERE 1",[your connection]) or die(mysql_error());
    if (!mysql_num_rows($query)){die("No rows in $table");}
    while($r=mysql_fetch_array($query)){
        if (!isset($html)){
            $keys = array_keys($r); 
            $html = "<tr>";
            foreach($keys as $key){
                $html .= "<th>$key</th>";
            }
            $html .= "</tr>";
        }
        $html .= "<tr>";
        foreach($r as $value){
            $html .= "<td>$value</td>";
        }
        $html .= "</tr>";   
    }
    return "<table>".$html."</table>";
}

添加一个循环来转储整个数据库:

$tables = mysql_list_tables ( 'database name',$link_identifier) or die(mysql_error());
while($r=mysql_fetch_array($tables)){
    echo dump_mysql_results($r[0]);
}

?>

评论

0赞 Ben D 1/23/2012
使用此函数并根据 mysql_list_tables 函数的结果编写一个循环:php.net/manual/en/function.mysql-list-tables.php...我稍微修改了我的答案以表明这一点。
0赞 Luchian Grigore 1/23/2012
我用了这个,因为我找不到更优雅的方式了。谢谢!
0赞 Artem Goutsoul 1/23/2012 #2

使用 SHOW TABLES 获取表列表,然后正常遍历它们以选择所有行并以 HTML 格式显示。

查看 http://dev.mysql.com/doc/refman/5.5/en/show-tables.html

0赞 Zul 1/23/2012 #3

mysqldump呢?

<?php
 exec('mysqldump --user=DBuser --password=DBpass --host=localhost --compact --xml DBname > file.xml');
?>

然后使用simpleXML将xml转换为HTML