2012-08-14 199 views
5

每次我運行mysql_fetch_array時,數組都返回重複值例如,mysql_fetch_array返回重複數據

Array 
(
    [0] => 1 
    [row_id] => 1 
    [1] => some text 
    [first_field] => some text 
    [2] => some text 
    [second_field] => some text 
} 

但我只想在陣列中單一的結果,我一直在使用

mysql_fetch_array($data, MYSQL_ASSOC); 

嘗試,但這個沒有什麼區別。

+0

inb4,PDO或mysqli – 2012-08-14 17:24:04

+0

顯示您的查詢和表格結構。 – Jocelyn 2012-08-14 17:24:32

+1

請不要使用'mysql'擴展名!最好使用PDO或MySQLi。 – ComFreek 2012-08-14 17:25:54

回答

12

這是mysql_fetch_array()的預期功能。如果您不想擁有「重複項」並只有關聯數組,請改爲使用mysql_fetch_assoc()

實施例:

while ($row = mysql_fetch_assoc($data)) { ... } 
+3

'mysql_fetch_array($ data,MYSQL_ASSOC);'會和mysql_fetch_assoc完全一樣。 – Jocelyn 2012-08-14 17:27:12

+0

@Jocelyn我知道 - 但是 - 沒有辦法使用'MYSQL_ASSOC'會返回一個數組與OP顯示的輸出,按照[手動](http://php.net/manual/en/function .mysql取入array.php)。 – newfurniturey 2012-08-14 17:29:13

+0

@ mk_89我剛剛用'mysql_fetch_array($ data,MYSQL_ASSOC)'進行了測試,並且無法複製(即 - 它的工作方式應該如何),所以我無法回答爲什麼它會在您的情況下失敗。嘗試使用'mysql_fetch_assoc()',看看是否解決了這個問題。 – newfurniturey 2012-08-14 17:33:52

0

manual

返回字符串數組對應於所提取的行,或 FALSE如果沒有更多的行。 返回數組的類型取決於如何定義result_type的 。通過使用MYSQL_BOTH(默認),你將得到一個包含關聯和數字索引的數組。使用 MYSQL_ASSOC,你只能得到關聯索引(如mysql_fetch_assoc() ),使用MYSQL_NUM,你只能得到數字索引(如 mysql_fetch_row()工作)。

換句話說,由於MYSQL_BOTH是默認值,所以你都返回了。您可以指定MYSQL_ASSOC或MYSQL_NUM來取代關聯數組或數組。您也可以使用mysql_fetch_assoc(),它只會返回一個關聯數組。

+0

OP已經試過MYSQL_ASSOC。 – Jocelyn 2012-08-14 17:31:10

1

使用mysql_fetch_assoc()爲associtive陣列,或者和mysql_fetch_row用於數字數組

+0

'mysql_fetch_array($ data,MYSQL_ASSOC);'會和mysql_fetch_assoc完全一樣。 – Jocelyn 2012-08-14 17:27:43

0

mysql_fetch_array()返回含有締合鍵(由查詢中指定的字段名)和整數位置鍵的陣列(即,0是第一場,1 ,是第二等等)。這是爲了方便用任何一種方法訪問數據。

如果你只是想要命名的鍵,你應該使用mysql_fetch_assoc()或更好的,因爲在這裏的每個人都會使用mysqli函數,因爲你會使用舊的mysql_ *函數。

+0

'mysql_fetch_array($ data,MYSQL_ASSOC);'會和mysql_fetch_assoc完全一樣。 – Jocelyn 2012-08-14 17:29:52

+0

@Jocelyn是的。我不明白downvote,因爲大多數熟悉使用舊mysql_ *函數一段時間的開發人員通常會使用mysql_fetch_assoc,而不必擔心在函數調用中設置正確的標誌。 – 2012-08-14 17:31:40

3

mysql_fetch_array將返回的結果集作爲對查詢執行的響應返回爲關聯數值和數值數組。 要將resultset作爲關聯數組返回,您需要使用mysql_fetch_assoc函數。 要將resultset返回爲數組數組,需要使用mysql_fetch_row函數。

0

mysqli_fetch_array($result, MYSQL_ASSOC)這對我而言很合適,如上面建議的mysql_fetch_assoc,在PHP5.5中現在已經棄用了。