我试图从数据库以及PHP5中的文件夹中删除图像,但我无法将其删除。这是我的代码:
<?php
$obj=new Crud("localhost","root","","3g");
class Crud{
public $mysqli;
public $data;
public function __construct($host,$username,$password,$db_name) {
$this->mysqli = new mysqli($host, $username, $password, $db_name);
if (mysqli_connect_errno()) {
echo "Error: Could not connect to database.";
exit;
} /*else{
echo"Your Database successfully connected";
}*/
}
public function __destruct() {
$this->mysqli->close();
}
public function read() {
$query="SELECT * FROM fashion";
$result= $this->mysqli->query($query);
$num_result=$result->num_rows;
if ($num_result>0) {
while($rows=$result->fetch_assoc()){
$this->data[]=$rows;
//print_r($rows);
}
return $this->data;
}
}
public function delete($id){
$query="DELETE FROM fashion WHERE id='$id'";
$result= $this->mysqli->query($query) or die(mysqli_connect_errno() . "Data cannot inserted");
if ($result) {
header('location:fashion.php');
}
}
}
?>
通过使用上述代码,记录仅从数据库中删除,但图像仍保留在文件夹中。
答案 0 :(得分:1)
要从文件夹中删除图片,您必须使用unlink
$file = "yourimage.jpg";
unlink($file);
如果图像在任何其他目录中,则必须指定完整目录路径
$file = "www/images/yourimage.jpg";
答案 1 :(得分:0)
您正在寻找的解决方案是执行该操作的unlink
函数 - 取消链接和删除文件。
您需要文件的名称以及PHP当前工作目录中文件的路径才能使其正常工作。 Kamrans答案显示了这一点。
所以:
public function delete($id){
$query = "SELECT filepath FROM fashion WHERE id = ? LIMIT 1";
$fileLocale = $this->mysqli->prepare($query);
$fileLocale->bind_param("i",$id);
$fileLocale->execute();
$result = $fileLocale->get_result();
$fileLocale->close();
while ($row = $result->fetch_array(MYSQLI_NUM))
{
/***
* only 1 result is returned so easy to collect
***/
foreach ($row as $r)
{
$filepath = $r;
}
}
unset($r,$row);
/***
$filepath is now the string of the location of the file.
***/
if (unlink($filepath)){
$query="DELETE FROM fashion WHERE id=? LIMIT 1";
$delete = $this->mysqli->prepare($query);
$delete->bind_param("i",$id);
$delete->execute();
$affectedRows = $delete->affected_rows;
if ($affectedRows == 1) {
header('location:fashion.php');
die();
}
header
时,始终在其后面放置die
命令。unlink
删除文件,成功时返回TRUE。 LIMIT
添加到您的SQL语句中,以便在出现问题时,例如,不会弄乱整个表格。安全措施。 答案 2 :(得分:-1)
在删除数据库引用之前,使用它来填充文件名,这是我假设存储在数据库中的名称。如果$ id是文件名,只需将其添加到系统命令中即可删除该文件。这假定是Linux。
public function delete($id){
exec('rm /path to file/' . $id);//delete the file via system command.
$query="DELETE FROM fashion WHERE id='$id'";
$result= $this->mysqli->query($query) or die(mysqli_connect_errno() . "Data cannot inserted");
if ($result) {
header('location:fashion.php');
die();
}
}