Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从数据库中获取文件名并将其从服务器中删除_Php_Mysql_Database_File Io_Mysqli - Fatal编程技术网

Php 从数据库中获取文件名并将其从服务器中删除

Php 从数据库中获取文件名并将其从服务器中删除,php,mysql,database,file-io,mysqli,Php,Mysql,Database,File Io,Mysqli,我想使用PHP和MySQL从服务器内的文件夹中删除一个图像。图像名称位于数据库中,图像名称中已包含格式[jpg]。我尝试了很多方法,下面是其中之一,但它还不起作用。请帮忙 if(isset($_POST['submit2'])) { $numeroimagem = $_POST["numero"]; $imagem=mysqli_query($con,"SELECT imagem FROM galeria WHERE numero='$numeroimagem'");

我想使用PHP和MySQL从服务器内的文件夹中删除一个图像。图像名称位于数据库中,图像名称中已包含格式[jpg]。我尝试了很多方法,下面是其中之一,但它还不起作用。请帮忙

if(isset($_POST['submit2'])) {
    $numeroimagem = $_POST["numero"];

    $imagem=mysqli_query($con,"SELECT imagem FROM galeria WHERE numero='$numeroimagem'");
    $nomeimagem=mysqli_fetch_row ($imagem);

    $target = '../imgs/galeria/'.$nomeimagem;

    if (file_exists($target)) {
        unlink($target);
    }
}
表格:

<form action="" method="post">
   <input name="numero" type="text" size="3" maxlength="3"><input type="submit" name="submit2" value="Delete"><br>
</form>

你忘记删除文件了。您可以使用“取消链接”功能:


我们不能确切地知道错误,但主要的问题是该文件没有使用realpath函数

如果路径正确,Realpath函数将解析

如果尝试realpath“../imgs/galeria/”,php将解析完整路径

如果realpath返回false或null,则当您必须尝试使用正确的路径时,无法解析该路径

如果您正在运行来自文件夹scripts/delete-imagem.php的脚本,以及位于public/imgs/galeria的文件,则应使用realpath'../public/images/获取完整路径

获得完整路径后,应尝试使用“取消链接”将其删除

$path = realpath('../public/imgs/galeria/');
if(is_dir($path)) {
    if(is_file($path.'/'.$fileName)) { //Note that realpath trim the final "/" from filepath.
         unlink($path.'/'.$fileName);
    {
}

此代码将强制它工作。

我刚刚发现问题。我在文件名上获取数组,通过添加[0]解决了此问题,如下所示:

$target = '../imgs/galeria/'.$nomeimagem[0];

无论如何,感谢您的提示:

您的代码仅验证图像文件是否存在。。。出于好奇发布错误,为什么不省去麻烦并将图像存储为BLOB呢@高科技黑手 数据库会变得更重,我不想在项目中使用它。我忘了在这里粘贴它,但我已经取消了代码链接,仍然无法工作。。。我现在正在编辑问题。我尝试了realpath“../imgs/galeria/”,但仍然不起作用: