Ne başarılı bir MySQL getiri SİL nedir?

4 Cevap php

PHP kullanarak, ben bir kaydı silmek için çalışıyorum, ama başarılı olup olmadığının kontrol etmek istiyorum. Şey, başarılı bir döndürülen DELETE FROM foo where bar = 'stuff'?

Alternatif olarak, bir DELETE olmadığını kontrol etmek için başka yollar başarılı oldu biliyor musunuz? Ya ben bunu silmeden önce sadece satır var emin olun daha iyi miyim? Mümkünse başka bir sorgu önlemek için çalışıyorum.

4 Cevap

Kullandığınız varsayarak mysql_query:

SQL ifadeleri, INSERT, UPDATE, DELETE, BIRAKMA, vb, mysql_query () diğer tür için başarı veya hata FALSE TRUE döndürür.

Eğer kullanıyorsanız PDO::exec, daha sonra elle bu diyor ki:

PDO :: exec () Eğer yayınlanan SQL ifadesi tarafından değiştirilen veya silinen satırların sayısını döndürür. Etkilenen satır yoksa PDO :: exec () 0 döndürür.

Çulluk cevap vermek istemiyorum, ama bu cevap olarak seçilen yana sorgu aslında bir şey kaldırmak vermedi bile, ben o mysql_query TRUE dönecektir dikkat etmelisiniz. Sen mysql_affected_rows , kontrol etmek için kullanmak gerekir.

Ayrıca, etkilenen satırların sayısı hakkında bakım eğer:

[Kullanım] mysql_affected_rows() DELETE, INSERT, REPLACE, veya UPDATE deyimi etkilenen kaç satır bulmak için.

Eğer sorgu çalıştıktan sonra yerleştirilen php kodu, bu deneyebilirsiniz:

if (mysql_affected_rows() > 0) {
    echo "You have successfully updated your data.<br><br>";
}
else {
    echo "The data you submitted matched the current data so nothing was changed.<br><br>";
}

PDO kullanarak DB kayıtları silmek için, ben bu işlevi kullanıyorum:

public function delete($entity_id){
    global $db;
    $tabel=$this->nameOfTheClass;        

    $q=$db->prepare("DELETE FROM $tabel WHERE entity_id=?");
    $q->bindValue(1,$entity_id);
    try{
        $count=$q->execute();
        return $count;
    }  
    catch (PDOException $e){
        var_dump($e->getMessage());
    }