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

时间:2012-01-22 18:17:29

标签: php mysql

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

我不想为每个表运行查询并逐步执行结果,然后输出它们。我需要这个用于测试目的,因此表格不是那么大。

任何提示?

我想直接在我的php文件中完成,其余的测试都在这里进行,以便我可以与样本进行比较。我需要自动执行此操作,因此无法真正使用PHPMyAdmin等工具。

3 个答案:

答案 0 :(得分: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>";
}

//添加循环以转储整个db:

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

?>

答案 1 :(得分:0)

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

请参阅http://dev.mysql.com/doc/refman/5.5/en/show-tables.html

答案 2 :(得分:0)

mysqldump怎么办?

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

然后使用simpleXML将xml转换为HTML