(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ı_belirteci
MySQL 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.