1

我从这个函数中得到了奇怪的行为。

输入

    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 question example

使用 mysql_fetch_array() 和 foreach() 而不是 while()

不是我的查询或 Mysql 结果错误

http://i.imgur.com/CZnIF.png

在此处输入图像描述


这里出了什么问题?

4

6 回答 6

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

于 2012-10-16T19:22:03.277 回答
2

使用 mysql_fetch_array 时,向它提供 MYSQL_ASSOC 标志。

编辑:这是您的代码,并进行了适当的更改

while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC)) 

此外,您可以通过输入 MYSQL_NUM 来仅使用数字索引来获取它们

于 2012-10-16T19:20:31.740 回答
1

您得到一个结果并想要另一个结果的原因是因为您将一个数组($row)推入一个新数组($rows)中。通过在数组中推一些东西(你使用的括号),你会得到一个自动递增的键。

于 2012-10-16T19:21:46.880 回答
1

试试这个:

$rows['name'] = $row['name'];
$rows['second_name] = $row['second_name'];

...

代替

$rows[] = $row;
于 2012-10-16T19:22:12.133 回答
1

默认情况下mysql_fetch_array,每个数据库列都有两个键——一个是数字键,一个是关联键。您可以这样做来告诉它只获取数字键:

mysql_fetch_array($result, MYSQL_NUM);

http://us2.php.net/manual/en/function.mysql-fetch-array.php

于 2012-10-16T19:24:56.487 回答
1

这是完全正常和预期的行为。如果您只想要关联数组,请使用

while ($row = mysql_fetch_array($result_set, MYSQL_ASSOC)) 
于 2012-10-16T19:25:41.650 回答