2010-04-17 74 views
0

我有这个脚本删除存储在文件系统上的用户的化身图像。另外,图像名称存储在MySQL数据库中。PHP和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)); 
    } 
} 

回答

1

由于avatar是你可能想简单地将avatar属性设置为NULLusers的属性。正如你所做的那样,你正在有效地删除整行。

因此,你应该使用UPDATE操作,而不是DELETE

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

此外,要知道,你的代码很容易受到SQL Injection。你应该考虑使用prepared statements

1

当时你的sql说删除用户,其中avatar = x和user_id = y,所以更新。

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