我正在尝试将数据库查询写入文件,但我只是想知道如何将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结果写入此文本文件的任何帮助。
答案 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)