这是我目前的代码:
$link = mysqli_connect("localhost", "username", "password", "database");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT id, title FROM titles WHERE type = 'movie' ORDER BY id ASC";
if ($result = mysqli_query($link, $query)) {
while ($row = mysqli_fetch_assoc($result)) {
printf ("%s-%s\n", $row["id"], $row["title"]);
}
mysqli_free_result($result);
}
mysqli_close($link);
使用printf
正确打印MySQL表中的所有行。
但是,我想将其写入文本文件,而不是打印它。这可能与printf
有关,还是我应该做其他事情?
答案 0 :(得分:2)
如果要将其写入磁盘,请在服务器上查看fopen()
,fwrite()
和fclose()
您也可以使用file_put_contents
,但这需要您在将所有内容写入文件之前准备好所有内容(如果您有大量记录,可能会导致内存使用率过高)或者如果您使用“附加”模式,一次写入1行,每次打开和关闭文件都会产生所有开销
如果您想让浏览器下载它,而不是只显示内容,那么您需要在响应中添加标题
header('Content-Disposition: attachment; filename="'.$filename.'"');
最好在它之前添加一些内容类型。例如,在您的情况下:
header('Content-type: text/plain');
答案 1 :(得分:1)
fprintf用于写入文件file_put_contents
也可以
$fp = fopen('output.txt', 'w');
$in = 'text';
fprintf($fp, '%s', $in);
答案 2 :(得分:0)
使用fprintf()
。它的工作方式与printf()
类似,但打印到文件流。
if ($result = mysqli_query($link, $query)) {
if ($fp = fopen("filename.txt", "w")) {
while ($row = mysqli_fetch_assoc($result)) {
fprintf ($fp, "%s-%s\n", $row["id"], $row["title"]);
}
fclose($fp);
}
mysqli_free_result($result);
}