2009-08-08 22 views
5

PHP ve MySQL kullanıyorum.mysql ve php'de yinelenen güncelleştirmeyi eklerken son işlemin eklenip yüklenmediğini veya güncelleneceğini nasıl öğrenebilirim?

Bir INSERT ON DUPLICATE UPDATE SQL deyimi kullanırsam, son işlemin bir güncelleştirme mi yoksa başarısız bir ekleme mi, başarılı bir ekleme mi olduğunu nasıl anlarım?

Varsayımlar, söz konusu tabloda otomatik artış kullanmaz, bu yüzden, öğrenmem için bana yardımcı olacak bir mysql_insert_id kullanamıyorum.

cevap

8

Mysql_affected_rows() öğesini 1 ve bir güncelleştirmede 2 döndürecek olan kontrol etmek isteyeceksiniz. mysql documentation'a göre.

if (mysql_affected_rows() == 1) //INSERT 
elseif (mysql_affected_row() == 2) //UPDATE 

güncelleme takdirde 0

+0

mysql_affected_rows() gerçekten GÜNCELLEME 2 dönecekti dönecektir ki bu durumda herhangi bir şey, değişmez sürece? –

+0

Birkaç test yaptım ve bu, bir eklenti yerine her güncelleme yapıldığında benim için döndüğü şeydi. Bir sütun veya tüm sütunları güncelliyor olsaydım. Söylediğim için varım var, ama tamamen emin değilim. satır ise – Cahlroisse

+3

Bu AÇIK KEY GÜNCELLEME DUPLICATE http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html de belgelenir, satır başına etkilenen-satırlar değer 1 ise Yeni bir satır olarak eklenir ve mevcut bir satır güncellenirse 2. – dmercredi