使用PHP将mysql表导出到.txt或.doc文件

use*_*836 5 php mysql export

我有一个mysql表,用于记录用户每天发送的消息.我想要做的是每天将消息日志导出一次到文本文件中,我不知道如何做到这一点.我们的服务器有phpmyadmin,我可以手动将表导出到文本文件中,但我不知道如何A)让phpmyadmin每天自动导出一次这个文件,或者B)用PHP代码编写导出.我希望导出的文件可供我网站的用户下载.它用PHP编写的网站.如果还有其他信息需要回答这个问题,请告诉我!

小智 5

<?php
    $fh = fopen('data.txt', 'w');
    $con = mysql_connect("localhost","root","");
    mysql_select_db("db_name", $con);

    /* insert field values into data.txt */

    $result = mysql_query("SELECT * FROM table_name");   
    while ($row = mysql_fetch_array($result)) {          
        $last = end($row);          
        $num = mysql_num_fields($result) ;    
        for($i = 0; $i < $num; $i++) {            
            fwrite($fh, $row[$i]);                      
            if ($row[$i] != $last)
               fwrite($fh, ", ");
        }                                                                 
        fwrite($fh, "\n");
    }
    fclose($fh);
?>
Run Code Online (Sandbox Code Playgroud)


Bil*_*win 2

自己动手时要小心,除非你处理 NULL、字符集等。

第一种选择:

<?php
$pdo = new PDO(...);
$results = $pdo->query("SELECT * FROM myTable INTO OUTFILE 'data.txt'");
$dummy = $result->fetchAll(); 
Run Code Online (Sandbox Code Playgroud)

data.txt 文件将写入 MySQL 服务器上。该目录必须可由 mysqld 进程的 uid 写入。它不会覆盖任何现有文件,并且要求您具有FILESQL 权限。

第二种选择:使用 mysqldump 输出到平面文本文件(如 @OMG Ponies 提到的):

mysqldump -t -T <directory> <database> <table>
Run Code Online (Sandbox Code Playgroud)

它的工作原理是这样的INTO OUTFILE,它需要在MySQL服务器主机上运行,​​并且该目录必须可由mysqld uid写入。

第三个选项:使用 mysql 客户端运行查询并输出文本:

mysql -B -e "SELECT * FROM MyTable" <database> > mytable.txt
Run Code Online (Sandbox Code Playgroud)

这可以在任何主机上运行,​​并且不需要特殊特权或目录权限。但 NULL 可能无法像 mysqldump 或INTO OUTFILE.