从这个简单的查询中,我无法弄清楚为什么我在[0]中获得重复结果,在[m_id]中获得另一个结果。我相信给定查询的结果必须只显示两个值。
$sql="SELECT m.m_id, m.work FROM mun as m WHERE m.mun_id=7 ";
$rslt=mysql_query($sql);
$result=mysql_fetch_array($rslt);
print_r($result);
输出:
Array
(
[0] => 7
[m_id] => 7
[1] => 260
[work] => 260
)
有人可以告诉我我做错了什么。 谢谢。
答案 0 :(得分:4)
这是mysql_fetch_array
的正常行为。它提供了数字和关联索引。
如果您只想要其中一个,请使用mysql_fetch_assoc
或mysql_fetch_row
$result=mysql_fetch_row($rslt);
Array
(
[0] => 7
[1] => 260
)
或
$result=mysql_fetch_assoc($rslt);
Array
(
[m_id] => 7
[work] => 260
)
还值得一提的是,您可以通过传递第二个参数来使用mysql_fetch_array
来获取此行为。
// same as mysql_fetch_row
$result=mysql_fetch_array($rslt, MYSQL_NUM);
和
// same as mysql_fetch_assoc
$result=mysql_fetch_array($rslt, MYSQL_ASSOC);
更多信息:http://php.net/manual/en/function.mysql-fetch-array.php
答案 1 :(得分:2)
mysql_fetch_array
的说明如下:
数组mysql_fetch_array(resource $ result [,int $ result_type = MYSQL_BOTH])
其中第二个可选参数是:
要获取的数组类型。它是一个常量,可以采用以下值:MYSQL_ASSOC,MYSQL_NUM和MYSQL_BOTH。
关于返回值:
返回数组的类型取决于result_type的定义方式。通过使用MYSQL_BOTH(默认),您将获得一个包含关联索引和数字索引的数组。使用MYSQL_ASSOC,您只能获得关联索引(因为mysql_fetch_assoc()有效),使用MYSQL_NUM,您只能获得数字索引(因为mysql_fetch_row()可以工作)。
引自http://php.net/manual/en/function.mysql-fetch-array.php。
因此,在您的情况下,应用了默认MYSQL_BOTH
。我确定以下内容必须解决:
$result=mysql_fetch_array($rslt, MYSQL_ASSOC);
或
$result=mysql_fetch_array($rslt, MYSQL_NUM)
;