如何防止 php fwrite() 覆盖文件上的一行文本?
我从我的脚本中提取了以下代码行。
$i=0;
$j=0;
$fp=fopen('C:\xampp\htdocs\Lib_auto_project\Deleted_Records\delete_log.sql','a+');// File where the string is to be written
foreach($_POST as $temp)//repeat for all the values passed from the form
{
if($j==0)
{
$result_set=$mysqli->query("select * from {$_SESSION['table_name_1']} where Copyid=$temp");
$result_set=$result_set->fetch_array(MYSQL_BOTH);
++$j;
}
if($temp!='Drop')// Drop is simply the value of submit buttom
{
$date=mysql_query("select now() as current_date_time") or die(mysql_error());
$date=mysql_fetch_array($date,MYSQL_BOTH);
$result="\n"."INSERT INTO delete_book_log // this is the string begining with line break and followed by sql insert statement
VALUES(
'{$result_set["Bid"]}',
'$temp',
'{$result_set["Name"]}',
'{$result_set["Publication"]}',
'{$result_set["ISBN"]}',
'{$result_set["Author"]}',
'{$result_set["Edition"]}',
'in',
'{$result_set["Book_Baseid"]}',
'{$date['current_date_time']}'
);";
fflush($fp);
fwrite($fp,$result);
$mysqli->query("Delete from {$_SESSION['table_name_1']} where copyid=$temp");
$i++;
}
}
fclose($fp);
![屏幕截图]: https://i.sstatic.net/dOzSj.jpg
正如您从屏幕截图中可以看到,当选择一条或多条记录并单击删除按钮时,我希望将记录从数据库中删除,但希望将相应的sql插入语句写入file(C:\xampp\htdocs\Lib_auto_project\Deleted_Records\delete_log.sql)
。为此,我编写了上面的代码。现在的问题是,当我选择记录并将它们全部删除时,就会按需要进行。当我在任何其他时刻执行相同的操作时,我想要类似的 sql 插入字符串,如上所示存储在 $result 中,附加到 file(C:\xampp\htdocs\Lib_auto_project\Deleted_Records\delete_log.sql)< /代码>。这并没有完全发生。相反,先前写入的字符串会被新字符串覆盖。
我已经尝试了一遍又一遍,但只有最近的字符串才会覆盖旧的字符串。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
很高兴 php 在 手册 中说
a+
(使用a
应该足以满足您的需求):但尝试运行此代码(称为
test.php
):它将生成以下输出:
您可以使用
fseek()
:或者使用
file_put_contents()
具有适当的参数:并且不要忘记检查您的文件权限以及文件是否已通过如下代码成功打开:
It's nice that php says in the manual that
a+
(usinga
should be just enough for you):but try to run this code (called
test.php
):it'll generate this output:
You may either use
fseek()
:Or use
file_put_contents()
with proper parameters:And don't forget to check your file permissions and whether file was opened successfully by code like this:
尝试使用 file_get_contents 和 file_put_contents 而不是 fwrite,并将查询附加到数组或字符串:
Try to use file_get_contents and file_put_contents instead of fwrite, and append your queries to array or string: