我想使用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>
答案 0 :(得分:0)
您忘了删除该文件。你可以使用unlink函数:
答案 1 :(得分:0)
我们无法准确知道错误,但主要问题是文件没有使用realpath函数。
如果路径正确
,则实路径功能会解析如果您尝试使用realpath(&#39; ../ imgs / galeria /&#39;),php将解析完整路径。
如果realpath返回false或null,则当您必须尝试使用正确的路径时,无法解析路径。
如果您从文件夹脚本/ delete-imagem.php运行脚本,以及public / imgs / galeria中的文件,则应使用realpath(&#39; ../ public / images /)来获取完整路径。
一旦获得完整路径,您应该尝试使用&#34; unlink()&#34;
删除它$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);
{
}
此代码将强制它起作用。
答案 2 :(得分:0)
我刚刚发现了问题。我通过添加[0]来解决文件名上的Array:
$target = '../imgs/galeria/'.$nomeimagem[0];
感谢您的提示:)