PHP& MySQL图片删除问题?

时间:2010-04-17 00:57:27

标签: php mysql

我有这个脚本删除存储在文件系统上的用户的头像图像。此外,图像名称存储在MySQL数据库中。

但由于某种原因,脚本会删除所有用户的信息。例如,如果users_id为3,则还删除所有用户的信息,如名字,姓氏,年龄等。基本上一切都被删除,包括用户。

如何修复此问题,以便仅删除图像和图像名称?

以下是代码:

$user_id = '3';

if (isset($_POST['delete_image'])) { 
    $a = "SELECT * FROM users WHERE avatar = '". $avatar ."' AND user_id = '". $user_id ."'";
    $r = mysqli_query ($mysqli, $a) or trigger_error("Query: $a\n<br />MySQL Error: " . mysqli_error($mysqli));
    if ($r == TRUE) {           
        unlink("../members/" . $user_id . "/images/" . $avatar); 
        unlink("../members/" . $user_id . "/images/thumbs/" . $avatar);

        $a = "DELETE FROM users WHERE avatar = '". $avatar ."' AND user_id = '". $user_id ."'";
        $r = mysqli_query ($mysqli, $a) or trigger_error("Query: $a\n<br />MySQL Error: " . mysqli_error($mysqli));
    }
}

2 个答案:

答案 0 :(得分:1)

由于avatar是表格users的属性,您可能只想将avatar属性设置为NULL。正如您所做的那样,您实际上正在删除整行。

因此,您应该使用UPDATE操作代替DELETE

$a = "UPDATE users SET avatar = NULL WHERE user_id = '". $user_id ."'";

此外,请注意您的代码容易受到SQL Injection的攻击。您应该考虑使用prepared statements

答案 1 :(得分:1)

当你的sql说要删除avatar = x和user_id = y的用户时,请更新。

$a = "UPDATE users SET avatar=NULL where user_id='". $user_id ."'";