1

我正在尝试使用 php 创建一个文本文件,并且该值来自一个 db 调用

$result = mysql_query("SELECT code FROM topic_master");
while ($row = mysql_fetch_array($result)) {
$x1=$row{'code'};
exec("printf $x1 >> code.txt");
}

但该值并未插入 code.txt 中。只有数组(代码)被插入到 code.txt 中。实际上 $row{'code'} 有“#xy { } () %”。如何将值写入 txt 文件。

4

6 回答 6

3

这将解决您的问题:

$result = mysql_query("SELECT code FROM topic_master");
while ($row = mysql_fetch_array($result)) {
file_put_contents('code.txt',$row['code'],FILE_APPEND);//FILE_APPEND is necessary
}
于 2013-09-05T17:58:01.680 回答
1

使用file_put_contents而不是那个 exec 并做

$s = "";
while ($row = mysql_fetch_array($result)) {
    $x1=$row['code'];
    $s .= $x1 . "\n";
}
file_put_contents("code.txt", $s, FILE_APPEND);
于 2013-09-05T17:54:38.897 回答
0

首先,你不应该使用$row{'code'}正确的用法是$row['code']

另外,我建议使用file_put_contents()而不是exec所以你可以这样做

$result = mysql_query("SELECT code FROM topic_master");
while ($row = mysql_fetch_array($result)) {
$x1=$row['code'];
file_put_contents('code.txt',$x1, FILE_APPEND);
}
于 2013-09-05T17:55:39.693 回答
0

$result = mysql_query("SELECT code FROM topic_master");

// if you want to APPEND the data in code.txt, use this
// however, using that particular SQL query the same data will be written over and over because there's nothing specifying a parameter change
while ($row = mysql_fetch_array($result)) {
    $x1 = $row['code'];
    write_file('code.txt',$x1,'a');
}

// if you want to OVERWRITE the data in code.txt use this
while ($row = mysql_fetch_array($result)) {
    $x1 .= $row['code'];
}
write_file('code.txt',$x1,'w');


// function to write content to a file (with error checking)
function write_file($filename,$content,$flag) {
    if(is_writable($filename)) {
        if(!$handle = fopen($filename, $flag)) {
            // die, or (preferably) write to error handler function
            die('error');
        }
        if(fwrite($handle, $content) === FALSE) {
            // die, or (preferably) write to error handler function
            die('error');
        }
        fclose($handle);
    }
}

编辑:将标志从 w 更改为 a。

另一个编辑:如果要附加到文件,请将 fopen() 标志设置为“a”。如果要覆盖现有内容,请将标志更改为“w”。

最终编辑:添加了两个带有解释的版本

于 2013-09-05T17:57:45.710 回答
0

实际上,您不是使用 PHP 创建文本文件,而是使用 shell 执行创建文本文件。你为什么不试试文件功能呢?

$result = mysql_query("SELECT code FROM topic_master");
$file = fopen("code.txt", "ab");
while ($row = mysql_fetch_array($result)) {
    fwrite($file, $row["code"]);
}
fclose($file);
于 2013-09-05T17:58:47.777 回答
0

获取变量中的所有数据并将其写入文件

<?php 

$result = mysql_query("SELECT code FROM topic_master");

$data = "";
while ($row = mysql_fetch_array($result)) {

    $x1=$row['code'];

    $data .= $x1;

}

$fp = fopen("code.txt","w");

fwrite($fp,$data);

fclose($fp);

?> 
于 2013-09-05T17:59:03.250 回答