(PHP 4, PHP 5)
mysql_affected_rows ā Ćnceki MySQL iÅleminde etkilenen satırların sayısını al
Bu eklentinin kullanımı PHP 5.5.0 itibariyle ƶnerilmemekte olup PHP 7.0.0'da kaldırılmıÅtır. Bu eklentinin yerine ya mysqli ya da PDO_MySQL eklentisi kullanılmalıdır. MySQL API seƧerken MySQL API'ye BakıŠbelgesi yardımcı olabilir. Bu iÅlevin yerine kullanılabilecekler:
baÄlantı_belirteci ile iliÅkili son INSERT, UPDATE,
REPLACE veya DELETE sorgusundan etkilenen satır sayısını döndürür.
baÄlantı_belirteciMySQL baÄlantısı. EÄer baÄlantı belirteci belirtilmemiÅse
mysql_connect() tarafından aƧılan son baÄlantı
kullanılmaya ƧalıÅılır. EÄer bƶyle bir baÄlantı yoksa
mysql_connect() baÄımsız deÄiÅkensiz olarak ƧaÄrılmıŠgibi bir
baÄlantı oluÅturmaya ƧalıÅır. HiƧbir baÄlantı yoksa ve yenisi de
kurulamazsa E_WARNING seviyesinde bir hata
üretilir.
Son sorgunun baÅarılı olması durumunda etkilenen satırların sayısını dƶndürür; baÅarısız olması durumunda -1 dƶndürür.
EÄer son sorgu, WHERE Åartı iƧermeyen bir DELETE sorgusuysa, tablodaki bütün kayıtlar silinmiÅ demektir, ancak bu iÅlev MySQL'in 4.1.2'den ƶnceki sürümlerinde 0 dƶndürür.
UPDATE'i kullanırken, MySQL yeni deÄerleri eski deÄerleri ile aynı olan sütunları düzeltmez. Bu da mysql_affected_rows()'un muhtemelen uyan tüm satırların deÄil, sadece sorgu sonucu gerƧekten düzeltilen satırların sayısını dƶndürmesine neden olur.
REPLACE ifadesi aynı birincil anahtara sahip olan kayıtları siler, daha sonra yeni kaydı girer. Bu iÅlev silinen kayıtların sayısı artı girilen kayıtların sayısını dƶndürür.
"INSERT ... ON DUPLICATE KEY UPDATE" sorgularında, yerleÅtirme yapılmıÅsa
1, mevcut satır güncellenmiÅse 2 dƶner.
Ćrnek 1 - mysql_affected_rows() ƶrneÄi
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('BaÄlanamadı: ' . mysql_error());
}
mysql_select_db('mydb');
/* bu silinen kayıtların gerçek sayısını döndürmeli */
mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Silinen kayıtlar: %d\n", mysql_affected_rows());
/* WHERE Åartıyla asla true olmaz, 0 dƶndürmeli */
mysql_query('DELETE FROM mytable WHERE 0');
printf("Silinen kayıtlar: %d\n", mysql_affected_rows());
?>Yukarıdaki ƶrnek Åuna benzer bir Ƨıktı üretir:
Silinen kayıtlar: 10 Silinen kayıtlar: 0
Ćrnek 2 - Hareket kullananılan mysql_affected_rows() ƶrneÄi
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('BaÄlanamadı: ' . mysql_error());
}
mysql_select_db('mydb');
/* Kayıtları güncelle */
mysql_query("UPDATE mytable SET used=1 WHERE id < 10");
printf ("Güncellenen kayıtlar: %d\n", mysql_affected_rows());
mysql_query("COMMIT");
?>Yukarıdaki ƶrnek Åuna benzer bir Ƨıktı üretir:
Güncellenen kayıtlar: 10
Bilginize: Hareketler
EÄer hareketleri kullanıyorsanız mysql_affected_rows() iÅlevini INSERT, UPDATE veya DELETE sorgunuzdan sonra, ama COMMIT'den ƶnce kullanmalısınız.
Bilginize: SELECT Deyimleri
Bir SELECT sorgusundan dƶndürülen satırların sayısını almak iƧin, mysql_num_rows() iÅlevini kullanmak mümkündür.
Bilginize: BirleÅik Yabancı Anahtarlar
mysql_affected_rows() yabancı anahtar kısıtlarındaki ON DELETE CASCADE ve/veya ON UPDATE CASCADE kullanımları üzerinden dolaylı olarak etkilenen satırları saymaz.