我有.csv文件与4列。删除与第一列id相同的行的最简单方法是什么?这就是我被卡住的地方:
if($_GET['id']) {
$id = $_GET['id'];
$file_handle = fopen("testimonials.csv", "rw");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
if ($id == $line_of_text[0]) {
// remove row
}
}
fclose($file_handle);
}
不幸的是,数据库不是一个选择。
5条答案
按热度按时间jdgnovmf1#
slhcrj9b2#
我最近做了一个类似的事情在一个通讯退订,这里是我的代码:
这使用逐行写出csv的临时文件方法来避免存储器错误。然后,一旦创建了新文件,它会删除原始文件并重命名临时文件。
您可以修改此代码,使其查找ID而不是电子邮件地址,例如:
q8l4jmvw3#
ttcibm8c4#
我已经找到了一个解决方案,即不需要复制文件。
注意:这些fopen命令中只有一个会失败,从而泄漏第二个命令的句柄。这将是很好的,检查两个句柄独立和关闭他们的错误。
k5ifujac5#
您可以:
基本上,你运行每一行,并检查id是否与get参数中发送的id不匹配,如果不匹配,则将该行写入新的容器/变量。
然后将
$new
值重写到文件中,这应该可以正常工作:0
上是否有CSV标题?