我从这个函数中得到了奇怪的行为。
输入
public function fetch_array($result_set)
{
$rows = array();
while ($row = mysql_fetch_array($result_set))
{
$rows[] = $row;
print_r($row);
break;
}
return $rows;
}
我已经使该函数运行一次,但它与我的MySQL查询结果重复了一行。
输出
Array ( [0] => Sarah [first_name] => Sarah [1] => Palin [second_name] => Palin )
应该是
正确输出
Array ( [first_name] => Sarah [second_name] => Palin )
我使用了这个SO问题的例子
Use mysql_fetch_array() with foreach() instead of while()
不是我的查询或Mysql结果错误
这里出了什么问题?
答案 0 :(得分:4)
这不是错误,而是mysql_fetch_array()
http://us.php.net/manual/en/function.mysql-fetch-array.php的预期行为
您可以设置result_type
标记,也可以只使用mysql_fetch_assoc()
。 http://us.php.net/manual/en/function.mysql-fetch-assoc.php
答案 1 :(得分:2)
使用mysql_fetch_array时,请输入MYSQL_ASSOC标志。
编辑:这是您的代码,并进行了适当的更改
while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC))
此外,您可以通过提供MYSQL_NUM
来获取数字索引答案 2 :(得分:1)
你得到一个结果并且想要另一个结果的原因是因为你在一个新数组($ rows)中推送一个数组($ row)。通过推送数组中的某些内容(您使用的括号),您将获得一个自动递增键。
答案 3 :(得分:1)
试试这个:
$rows['name'] = $row['name'];
$rows['second_name] = $row['second_name'];
...
而不是
$rows[] = $row;
答案 4 :(得分:1)
默认情况下,mysql_fetch_array
每个数据库列都有两个键 - 一个带有数字键,另一个带有关联键。
你可以这样做只告诉它取数字键:
mysql_fetch_array($result, MYSQL_NUM);
答案 5 :(得分:1)
这是完全正常和预期的行为。如果您只想要关联数组,请使用
while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC))