2010-04-17 73 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 ."'";