Kategori arşivi: Mysql

mysql_unbuffered_query

mysql_unbuffered_query — Sonuç kümesi tamponlanmayan ve alınmayan bir SQL sorgusu gönderir

resource mysql_unbuffered_query ( string $sorgu [, resource $bağlantı_belirteci ] )

SELECT, SHOW, DESCRIBE ve EXPLAIN deyimleri için mysql_unbuffered_query() başarı durumunda bir özkaynak aksi takdirde FALSE döndürür.

UPDATE, DELETE, DROP gibi diğer SQL deyimi türlerinde, mysql_unbuffered_query() başarı durumunda TRUE aksi takdirde FALSE döndürür.

mysql_affected_rows

int mysql_affected_rows ([ resource $bağlantı_belirteci ] )

bağlantı_belirteci ile ilişkili son INSERT, UPDATE, REPLACE veya DELETE sorgusundan etkilenen satır sayısını döndürür.

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.

<?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());
?>
Silinen kayıtlar: 10
Silinen kayıtlar: 0
<?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");
?>
Güncellenen kayıtlar: 10

Mysql Sütun İsimlerini Çekmek PHP-MYSQL

mysql ile

SELECT `COLUMN_NAME` /*  * Koyarsak Diğer Bilgileride Görüsünüz  */

FROM `information_schema`.`COLUMNS`
WHERE TABLE_SCHEMA='database_adi' AND
 TABLE_NAME='tablo_adi' ORDER BY `ORDINAL_POSITION`

php ile

<?php

$sql =  mysql_query("SELECT * FROM `tablo` ORDER BY `id` LIMIT 50;");
	$field_names = array();
	while ($field = mysql_fetch_field($sql)){
		$field_names[] = $field;
	}

print_r($field_names);

?>

Projenize göre istediğinizi kullanmak sizin elinizde önerim php olanıdır

Mysql Performanslı Sayfalama Yapmak

PHP ve MySQL ile veritabanı işlemlerine girdiğinizde bu tarz bir uygulama ile karşılaşacaksınız. Nerede derseniz de, en çok verileri sayfalama işlemlerinde elbet. Bu noktada, performans açısından öğrenmeniz gereken bir sorgu var. Çok işinize yarayacak. Buyurun bakalım icon smile MySQL sorgusunda LIMIT kullanırken toplam satır sayısını bulmak
Normalde, MySQL sorgusundaki toplam satır sayısı nasıl bulunur?

Normal seviyedeki kullanıcılar bu işlemi alttaki sorgular ile gerçekleştirecektir.

SELECT COUNT(*) FROM sehir WHERE sehir_ad LIKE 'a%';
SELECT sehir_ad, tel_kod FROM sehir WHERE sehir_ad LIKE 'a%' LIMIT 0,2;

Buradaki ilk sorgu ile koşulumuza uyan tüm şehir isimlerini bulduk. Hani sayfalama bölümü yapacağız ve bu sorguya uyan toplam veri adeti lazım, işte burada bulduk onu.

Sıra geldi listelemeye. Ancak hepsini değil, sadece ikişer ikişer listelemek istiyoruz. O nedenle ilk 2 veriyi aldık.

Genelde yukarıdaki mantıkla bu işlem yürütülür. Ancak ilk satırda toplam veri adetini bulmak için yaptığımız sorgu, sistemi yoracaktır. O nedenle alttaki yöntem performans açısından en güzeli icon wink MySQL sorgusunda LIMIT kullanırken toplam satır sayısını bulmak
Daha performanslı bir sorgu

Üstteki sorgumu alttaki gibi değiştiriyorum.

SELECT SQL_CALC_FOUND_ROWS sehir_ad, tel_kod FROM sehir WHERE sehir_ad LIKE 'a%' LIMIT 0,2;
SELECT FOUND_ROWS();

Bu kez ilk satırın başına SQL_CALC_FOUND_ROWS ekledim ve sorgu koşuluma uyan 2 satırı çektim. İkinci satırda ise özel bir sorgu yaptım. MySQL 4 sürümü ile birlikte gelen FOUND_ROWS kullandım. İlk sorgumuz yapılıyor ve sadece 2 adet veri çekiliyor. Ancak başına eklediğim SQL_CALC_FOUND_ROWS terimi sayesinde, bu koşula uyan toplam veri sayısı da hafızaya alınıyor. Hemen ardından yaptığım (ki bu önemli, önceki sorgudan hemen sonra yapılması gerekiyor) FOUND_ROWS sorgusu ile de hafızadaki toplam veri değerini aldım.

kaynak http://www.dmry.net/mysql-sorgusunda-limit-kullanirken-toplam-satir-sayisini-bulmak/