PHP ile mysql güncelleme etkilenen satır (lar)

8 Cevap php

Benim güncelleme başarılı olup olmadığını Nasıl buluyorsunuz? ben bu yüzden ben her zaman sadece 0 satırları güncelleştirmek veya 1 olmalıdır. i bir satır güncelleştirilmiş olup olmadığını denetlemek için iyi bir yolu nedir nerede UniqueName = adını kullanarak güncelleme?

8 Cevap

mysql_affected_rows() Güncellemenize etkilenen satır sayısını döndürür.

http://us.php.net/manual/en/function.mysql-affected-rows.php

There is really no way of knowing it. Let's say the table tbl_numbers(id, value) has rows (1,"one") and (2,"two");

$result1="update tbl_numbers set value='first' where id=1";

Fıkra doğru döner ve mysql_affected_rows eğer $ result1 check if () 1 döndürür.

However, for $result2="update tbl_numbers set value='two' where id=2"; If you check $result2 in if clause it returns true and mysql_affected_rows() returns 0.

And, for $result3="update tbl_numbers set value='three' where id=3"; If you check $result3 in if clause it returns true and mysql_affected_rows() returns 0.

Peki kullanıcı zaten DB bilgileri gibi aynı veriyi tekrar sundu olur? Bellek tanımı gereği hiçbir satır sürecinde güncellenecek çünkü bu değeri 0 ile) (mysql_affected_rows dönecekti hizmet ediyorsa. Oysa sorgu kendisi başarılı oldu.

Bunun geçici kanıtı yerleştirilmeden önce içerik veya kullanarak ya da olacaktır:

$result = mysql_query($q);
if( mysql_affected_rows() == 0 )
    $state = $result ? "Success" : "Fail";

Eğer satırlar güncel ve eğer kontrol etmek için olsun bu şekilde değilse bu bir arıza oldu ya da sadece veri tekrar olmadığını kontrol edebilirsiniz.

Güncelleştirme sorgusu adlı bir değişken $ sorguda ise, yapabileceğiniz;

$result = mysql_query($query);
if($result){
    //succes!
} else {
    //fail!
}

Umarım bu yardımcı olur. Eğer sadece sorgu başarıyla idam edildi olmadığını bilmek istiyorsanız, bunu yapacağız. Eğer gerçekten pek çok satır nasıl etkilendiğini bilmek istiyorsanız, diğer önerileri kullanmak.

Ben burada oldukça geciktim, ama her zaman sorguyu değiştirerek hiçbir maç bir başarısızlık zorlayabilir.

Sütunlar 'kimliği' ve 'değer' tabelası 'foo' için. Maç ifade: ID = 4

update foo
join (select ID as nearID,
ID = 4
as matched from foo order by matched desc limit 0, 1) as t on nearID = ID
set value='somedata2'    
, ID = if(matched, nearID, 'nomatch')

Bu sadece bir güncelleme damgası ya da sıra numarası yerine olsa da içerecek tabloyu değiştirmek için muhtemelen daha kolay. (Bu her güncellemede değiştirmek istiyorsunuz beri)

mysql_affected_rows($link) is correct but depreciated.. mysqli_affected_rows($link) should be used now.

http://php.net/manual/en/function.mysql-affected-rows.php