我正在尝试删除ajax php文件中的图像。我有以下代码:
<?php
define('IS_AJAX', true);
$id = $db->real_escape_string($_GET['photo_id']);
$files = $db->query("SELECT * FROM uploaded_photos WHERE id=".$id);
$files = $files->fetch_object();
$file = $files->path;
if($file){
unlink("../uploads/".$file);
$db->query("DELETE FROM uploaded_photos WHERE id='".$id);
}
在这种情况下,路径是图像,例如1.jpg。它确实删除了表格行,但没有删除上载文件夹中的图像。希望有人可以帮助我。预先感谢您的努力。
您可能需要重新检查您的代码。您有未封闭的单引号。请参阅下面的代码...
define('IS_AJAX', true);
$id = $db->real_escape_string($_GET['photo_id']);
$files = $db->query("SELECT * FROM uploaded_photos WHERE id=".$id);
$files = $files->fetch_object();
$file = $files->path;
// NOTE THAT if($file) WOULD ALMOST ALWAYS RETURN TRUE SO LONG AS IT CONTAINS ANY STRING
// HOWEVER file_exists WILL CHECK IF THE FILE PHYSICALLY EXIST ON THE PATH/LOCATION OR NOT.
// PREFER file_exists IN THIS SCENARIO INSTEAD.
if(file_exists("../uploads/" . $file)){
// CHANGE THE FILE PERMISSION ON THE IMAGE SO THAT YOU CAN WORK WITH IT...
chmod("../uploads/" . $file, 0755); // <== GIVES YOU PERMISSION TO DEAL WITH THE FILE...
unlink("../uploads/".$file);
// BY THE WAY; HERE IS A PROBLEM... YOU HAVE AN UNCLOSED SINGLE QUOTE AFTER THE EQUAL SIGN.
// I REALLY WONDER HOW THE TABLE ROW DELETES WITH THE TYPO...
// TRY REMOVING OR COMPLETING IT THOUGH:
//$db->query("DELETE FROM uploaded_photos WHERE id='".$id); <=== SEE THAT SINGLE QUOTE AFTER "=" THERE? THAT'S YOUR ENEMY.
$db->query("DELETE FROM uploaded_photos WHERE id=".$id);
}
更新:无评论
<?php
define('IS_AJAX', true);
$id = $db->real_escape_string($_GET['photo_id']);
$files = $db->query("SELECT * FROM uploaded_photos WHERE id='{$id}'" );
$files = $files->fetch_object();
$file = $files->path;
if(file_exists("../uploads/" . $file)){
chmod("../uploads/" . $file, 0777);
unlink("../uploads/".$file);
$db->query("DELETE FROM uploaded_photos WHERE id='{$id}'");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句