将数据库查询写入文件

时间:2011-11-22 10:47:48

标签: php

我正在尝试将数据库查询写入文件,但我只是想知道如何将SQL数据输入到文件中。

它目前根本没有输出.txt文件。我怀疑它与while循环有关,并且质疑它是否需要存在。

我的代码是:

function backup_tables($host,$user,$pass,$name,$tables = '*')
{

$link = mysql_connect($host,$user,$pass);
mysql_select_db($name,$link);

$query = "SELECT gamename, username, MAX(thescore)
          FROM game_scores
          GROUP BY gamename, username
          ORDER BY gamename, thescore DESC";

$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {
    $scoredata = $row;
}


//save file
$handle = fopen('scores/games-backup'.'.txt','w+');
fwrite($handle,$scoredate);
fclose($handle);

echo "Success";
 }

非常感谢您将SQL结果写入此文本文件的任何帮助。

4 个答案:

答案 0 :(得分:2)

$row是一个数组,在将其写入文件之前,您需要将其设为字符串,您可以使用implode()

$ scoredata也在每个循环中被覆盖,可能使用$ scoredata []而不是

while($row = mysql_fetch_array($result)) {
    $scoredata[] = implode("; ", $row);
}

这也会使$scoredata成为一个数组,因此您需要将其转换为字符串!

$handle = fopen('scores/games-backup'.'.txt','w+');
fwrite($handle,implode("\r\n", $scoredata));
fclose($handle);

这应该在文件的新行上打印每个数据库行。

编辑:这只是一个文本文件,格式化为文本,不适合备份文件。您需要将文本结构化为SQL格式以使其有用..

答案 1 :(得分:2)

$row不是字符串,您必须先将其作为字符串才能将其放入文件中。 而且您必须将$scoredata更改为$scoredata[],因为它现在会被持续覆盖。

答案 2 :(得分:2)

尝试类似:

$handle = fopen('scores/games-backup'.'.txt','w+');

while($row = mysql_fetch_array($result)) {
  fputs($handle, join(';', $row)."\n");
}

fclose($handle);

$ row是一个数组,你必须加入它(或访问元素)

答案 3 :(得分:1)

您可以使用print_r函数,第二个参数设置为true。

$str = print_r($row, true);    
fwrite($handle,implode("\r\n", $str));

或者你可以serialize数组

$str = serialize($row);
fwrite($handle,implode("\r\n", $str));