2012-08-14 139 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中现在已经弃用了。