PHP’de mysql_fetch_array fonksyonun dikkat etmediğimiz bir parametresi daha vardır; $result_type!

result_type: mysql_fetch_array fonksyonunun, sorgudan dönen verilerin diziye atarkenki yöntemini belirtmeye yarar. 3 farklı result_type vardır: MYSQL_ASSOC, MYSQL_NUM, ve MYSQL_BOTH.

Örnekler için bir tablomuz olsun;

 

 

id user_name password email activated
1 ahmetertem 123 deneme@deneme.com 1
2 deneme 12345 deneme2@deneme.com 1
3 deneme 2 1234567 deneme3@deneme.com 0

 

MYSQL_ASSOC

Gelen kayıtları, tablodaki field ve/veya aliasları ile keyleyerek atama yapar.

 

Bu durumda diziye gelen keyler bu fieldlar olacaktır.
Ekran Çıktısı: 

Array
(
[id] => 1
[user_name] => ahmetertem
[password] => 123
[email] => deneme@deneme.com
[activated] => 1
)
Array
(
[id] => 2
[user_name] => deneme
[password] => 12345
[email] => deneme2@deneme.com
[activated] => 1
)
Array
(
[id] => 3
[user_name] => deneme 2
[password] => 1234567
[email] => deneme3@deneme.com
[activated] => 0
)

MYSQL_NUM

Kayıtları 0 indexinden baslayarak keyleme yapar.

Ekran Çıktısı: 

Array
(
[0] => 1
[1] => ahmetertem
[2] => 123
[3] => deneme@deneme.com
[4] => 1
)
Array
(
[0] => 2
[1] => deneme
[2] => 12345
[3] => deneme2@deneme.com
[4] => 1
)
Array
(
[0] => 3
[1] => deneme 2
[2] => 1234567
[3] => deneme3@deneme.com
[4] => 0
)

MYSQL_BOTH

Kayıtları hem MYSQL_NUM, hem de MYSQL_ASSOC’daki gibi, yani ikisini de kullanarak diziye atama yapar.

 

 

Ekran Çıktısı: 

Array
(
[0] => 1
[id] => 1
[1] => ahmetertem
[user_name] => ahmetertem
[2] => 123
[password] => 123
[3] => deneme@deneme.com
[email] => deneme@deneme.com
[4] => 1
[activated] => 1
)
Array
(
[0] => 2
[id] => 2
[1] => deneme
[user_name] => deneme
[2] => 12345
[password] => 12345
[3] => deneme2@deneme.com
[email] => deneme2@deneme.com
[4] => 1
[activated] => 1
)
Array
(
[0] => 3
[id] => 3
[1] => deneme 2
[user_name] => deneme 2
[2] => 1234567
[password] => 1234567
[3] => deneme3@deneme.com
[email] => deneme3@deneme.com
[4] => 0
[activated] => 0
)

 

mysql_fetch_array, varsayılan olan MYSQL_BOTH‘u kullanır, bu da demek oluyor ki RAM’de daha çok kayıt oluşur ve kullanılmıyorsa bu gereksiz bir işlemdir. Mümkün olduğunca MYSQL_ASSOC kullanın, eğer bir field name yoksa da aliaslarla işinizi çözün;

 

 

Kaynak: 

http://tr2.php.net/manual/en/function.mysql-fetch-array.php

 

Kolay gelsin ;)