我有以下代码:
<?php
include "../../koneksi.php";
$module=$_GET['module'];
$act=$_GET['act'];
$Gfile_id=$_GET['file_id'];
if ($module=='galleryPhoto' AND $act=='delete'){
$del=mysql_query("DELETE FROM gallery_photo WHERE file_id='$Gfile_id'");
header("location:../?v=gallery_foto&info=Success");
}
?>
我可以删除数据库行,但不能删除目录中的图像。如何从目录中删除图像?
答案 0 :(得分:1)
您可以使用unlink()函数
答案 1 :(得分:1)
如果要删除文件,当然不会使用这些功能删除,您需要使用unlink()
:
unlink('path/to/the/file.png');
强制性注释:
Please, don't use
mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
首先,(我希望)您需要保存要删除的文件的文件名。
然后在删除行之前,您可以先获取该文件名。然后只需在unlink()
将使用的路径中添加/连接它:
<?php
// connection
$con = new mysqli('localhost', 'username', 'password', 'database_name');
if(isset($_GET['module'], $_GET['act'], $_GET['file_id'])) {
$module = $_GET['module'];
$act = $_GET['act'];
$Gfile_id = $_GET['file_id'];
if($module == 'galleryPhoto' && $act == 'delete') {
// get the file path first that is saved
$sql = 'SELECT file_path FROM gallery_photo WHERE file_id = ?';
$select = $con->prepare($sql);
$select->bind_param('s', $Gfile_id);
$select->execute();
$select->bind_result($file_path);
$select->fetch(); // fetch single row
// delete the file
unlink('path/to/images/' . $file_path);
// then delete that row
$sql = 'DELETE FROM gallery_photo WHERE file_id = ?';
$delete = $con->prepare($sql);
$delete->bind_param('s', $Gfile_id);
$delete->execute();
header('Location: ../?v=gallery_foto&info=Success');
}
}
?>