使用php创建文件并向其中添加文本

使用php创建文件并向其中添加文本,php,linux,shell,Php,Linux,Shell,我正在尝试使用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中仅插入arraycode。 实际上,$row{'code'}

我正在尝试使用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中仅插入arraycode。 实际上,$row{'code'}有xy{}%。如何将值写入txt文件。

使用而不是该exec并执行

$s = "";
while ($row = mysql_fetch_array($result)) {
    $x1=$row['code'];
    $s .= $x1 . "\n";
}
file_put_contents("code.txt", $s, FILE_APPEND);
使用而不是那个exec和do

$s = "";
while ($row = mysql_fetch_array($result)) {
    $x1=$row['code'];
    $s .= $x1 . "\n";
}
file_put_contents("code.txt", $s, FILE_APPEND);

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

另外,我建议使用file\u put\u内容而不是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);
}

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

另外,我建议使用file\u put\u内容而不是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);
}
编辑:将标志从w更改为a

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

最终编辑:添加了两个版本,并进行了解释 编辑:将标志从w更改为a

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


最终编辑:添加了两个带有说明的版本

这将解决您的问题:

$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
}

这将解决您的问题:

$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
}

实际上,您不是使用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);

实际上,您不是使用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);

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

<?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);

?> 

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

<?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);

?> 


使用FILE\u APPEND标志不擦除以前的数据,我认为\r\nbetter@FaceOfJock在Linux中使用\r\n将产生不希望的结果。这在Windows上很好,但在Linux上不行。@Fred ii-但在记事本++中,\n将不会传递到下一步line@FaceOfJock您认为什么不会传递到下一行?使用FILE_APPEND标志不擦除上一个数据,我认为\r\nbetter@FaceOfJock在Linux中使用\r\n将产生不希望的结果。这在Windows上很好,但在Linux上不行。@Fred ii-但在记事本++中,\n将不会传递到下一步line@FaceOfJock您认为什么不会传递到下一行?文件\u追加应该在文件\u输入中,否则内容将被勘误,并且只有最后一行在文件中。我认为每次刷新此页面时,它都会追加数据。每次$x1=abc时,将存储相同的数据;文件put内容'code.txt',$x1,文件APPEND;如果刷新第3页,时间输出将为“abc”,我想他不希望看到答案代码。txt将包含数据库中每个刷新文件中的数据量。\u APPEND应在文件中。\u输入或内容将被更正,并且只有最后一行将在文件中。我想它将为该页的每次刷新追加数据。每次$x1=abc时,将存储相同的数据;文件put内容'code.txt',$x1,文件APPEND;如果刷新第3页,时间输出将为“abc”,我想他不希望看到答案code.txt将包含每次刷新时数据库中的数据量fwrite$fp,$data而不是fwrite$fp,$x1和$fp=fopencode.txt,a;将指针放在文件末尾而不是beginning@Salimw将覆盖内容。OP需要追加,因此a或a+它是循环外的,所有值都存储在变量$data中,它只写入文件once@Salim根据OP的标题,使用php创建文件并向其添加文本,请参见接受的答案,其中使用文件_APPENDRead注释,在例外回答中写入$fp、$data而不是fwrite$fp、$x1以及$fp=fopencode.txt,a;将指针放在文件末尾而不是beginning@Salimw将覆盖内容。OP需要追加,因此a或a+它是循环外的,所有值都存储在变量$data中,它只写入文件once@Salim根据OP的标题,使用php创建文件并向其添加文本,请参见接受的答案,其中使用文件_APPENDRead注释在例外答案中?b代表二进制。如果是文本,则为a或a+,而不是b开关。比如说:“为了便于移植,强烈建议您在使用fopen打开文件时始终使用“b”标志。”ab?b代表二进制。如果是文本,则为a或a+,而不是b开关。其中包括:“为了便于移植,强烈建议您在使用fopen打开文件时始终使用“b”标志。”w将覆盖内容。OP需要追加,因此a或a+谢谢,没有看到。他说他需要追加什么?不客气,蒂姆。在标题中使用php创建文件并向其添加文本是的,当重要内容出现在标题中而不是问题正文本身时,并不总是很清楚;诚实的错误-不管怎么说,完全令人困惑,因为添加可能意味着两者兼而有之w将覆盖内容。OP需要追加,因此a或a+谢谢,没有看到。他说他需要什么
附加?不客气,蒂姆。在标题中使用php创建文件并向其添加文本是的,当重要内容出现在标题中而不是问题正文本身时,并不总是很清楚;诚实的错误-不管怎么说,完全令人困惑,因为添加可能意味着两者兼而有之每次刷新都会附加相同的数据。@Salim no,每次迭代都会更改数据,File_append会将光标放在文件末尾,这样数据就不会被擦除$x1=abc;文件put内容'code.txt',$x1,文件APPEND;如果将页面刷新3次,输出将为“abc”@Salim OP对此没有任何说明。他应该指定他想要的内容,不要忘记数据库不是一个变量,值也不需要更改$x1=$row['code'];每个周期。只需将内容“code.txt”、$row['code']和文件“APPEND;”归档即可;。Mysql已弃用。循环文件访问,而不是一次保存…每次刷新都会附加相同的数据。@Salim否,每次迭代都会更改数据,而file_append会将光标放在文件末尾,这样数据就不会被删除$x1=abc;文件put内容'code.txt',$x1,文件APPEND;如果将页面刷新3次,输出将为“abc”@Salim OP对此没有任何说明。他应该指定他想要的内容,不要忘记数据库不是一个变量,值也不需要更改$x1=$row['code'];每个周期。只需将内容“code.txt”、$row['code']和文件“APPEND;”归档即可;。Mysql已弃用。循环文件访问,而不是一次保存。。。