PHP &

2 Cevap php

Ben dosya sisteminde depolanan bir kullanıcının avatar resmi siler bu komut dosyası var. Buna ek olarak, görüntü adı MySQL veritabanında saklanır.

Ama nedense komut kullanıcının bilgileri siler. Users_id 3 Örneğin, böylece ilk ad, soyad, yaş ve benzeri kullanıcının tüm bilgi, hem de silinir. Temelde her şey dahil olmak üzere kullanıcı silinir.

Nasıl bu yüzden sadece görüntüleri düzeltmek yoktur ve görüntü adı silinir?

İşte kod:

$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 Cevap

avatar users sadece için avatar özniteliğini ayarlamak isteyebilirsiniz tablonun bir nitelik olduğundan NULL. Yaptığın gibi, etkili tüm satır silme edildi.

Bu nedenle yerine UPDATE işlemi kullanılarak yapılmalıdır DELETE:

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

Buna ek olarak, kod SQL Injection savunmasız olduğunu unutmayın. Sen prepared statements kullanmayı düşünmelisiniz.

Dakikada sql avatar = x ve y = User_id kullanıcı silmek böylece yerine güncelleme diyor.

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