2012-05-10 67 views
2

雖然與PHP的工作,處理連接與數據庫(MySQL的)爲什麼陣列保持重複數據

$result = mysql_query('select * from products'); 
$row = mysql_fetch_array($result); 

而昨日成立的是陣列$row中有重複的數據。

首先,你必須數據的從佈置在像索引數據庫中選擇:$row[0] = ID;比你還可以找到$row['ID'] = ID.

所以它是這一框架的哪些數據複製這只是一個功能,實際上還是在陣列存儲兩次這些數據的。

回答

1

from the manual

mysql_fetch_array - 從結果集中取得一行作爲關聯陣列, 數字數組,或兩者

函數的原型說

array mysql_fetch_array (resource $result [, int $result_type = MYSQL_BOTH ]) 

這意味着它默認返回兩個數組 - 即 - 複製信息

+0

非常感謝這個答案,所以使用鍵和索引都是內存泄漏,對不對? – Burimi

+0

不,它只是使用更多的內存 - 如果該內存將繼續使用,而不是釋放內存泄漏,但我認爲當您的$行超出範圍時它會被釋放 –

0

mysql_fetch_array將結果行作爲關聯數組或數組數組或兩者獲取。請參閱:mysql_fetch_array

0

$result中的每一行都有一個索引,一個名稱和一個值。您可以通過索引或名稱查找行的值。

2

要獲得只有一個值集,您需要將第二個參數傳遞給mysql_fetch_array。 或者「MYSQL_ASSOC」獲取關聯數組,或者「MYSQL_NUM」獲取正常數組。 實施例:

$row = mysql_fetch_array($result, 'MYSQL_ASSOC') 

這將返回:

$row['id'] 

Documentation