Php 删除sql转储文件
我使用SQL查询创建csv文件:Php 删除sql转储文件,php,mysql,file-permissions,unlink,Php,Mysql,File Permissions,Unlink,我使用SQL查询创建csv文件: $sql = "SELECT 'id','username','name','email', 'phone_number','city', 'batch','course_type' UNION ALL SELECT id, username, name, email, phone_number, city, batch, course_type FROM users
$sql = "SELECT 'id','username','name','email',
'phone_number','city',
'batch','course_type' UNION ALL
SELECT id, username, name, email,
phone_number, city, batch, course_type
FROM users INTO OUTFILE '".$file_path."' ".
"FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
LINES TERMINATED BY '\n'";
导致浏览器强制下载此文件后,我需要从/tmp目录中删除此文件。但是,由于该文件属于mysql,php代码无法删除它。如何在我的代码中更改此文件的权限,以便删除该文件?一个正确的解决方案是(这是一个如何完成的粗略示例): 将数据库中的数据作为数组返回,并对其进行迭代:
// tell the browser that this is a download
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=list.csv");
// column separator
$separator = ';';
// field delimiter
$field_delimiter = '"';
// line end
$line_end = "\r\n";
foreach ($result as $row):
$i = 0;
foreach ($row as $item):
// do not add separator before the first item
if ($i > 0)
{
echo $separator;
}
echo $field_delimiter.$item.$field_delimiter;
$i++;
endforeach;
// line end
echo $line_end;
endforeach;
不要输出任何其他内容,只输出CSV内容。也许您可以从php创建一个文件?在这种情况下,您可以将此文件放置在需要的位置,然后稍后将其删除。一般来说,如果您没有删除该文件的权限,则您没有更改权限的权限。安卓解决方案可能是最简单的。只需将结果返回到php并从那里回显到浏览器,省去了对临时文件的需要