如何将文本输出到文件?

时间:2017-04-26 21:26:12

标签: php mysql

这是我目前的代码:

$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有关,还是我应该做其他事情?

3 个答案:

答案 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);
}
相关问题