最后一行总是返回false?

时间:2013-05-08 02:39:24

标签: php mysql

这很有效,除了最后一行总是返回false。我在我的网站中多次使用它,无论我运行什么查询,最后一行总是返回false而不是最后一行中的数据。

因此,如果我有一个应返回2行的查询,则返回1行并返回false。我不确定为什么。

function query2array($query, $sql_con) {
    $result = mysql_query($query,$sql_con); 

    if(!$result) {
        return false;
    } 
    else if (mysql_num_rows($result) > 0) {
        //set entire result to array
        while($arr_data[] = mysql_fetch_array($result));

        var_dump($arr_data);        

        if(count($arr_data) > 0) {
            return $arr_data;
        }
    }

    return false; 
}

我是PHP新手,我已经阅读了mysql_fetch_array的文档,似乎无法弄清楚这里出了什么问题。 (我也知道我应该使用mysqli,但我选择了其他人开发的网站)

1 个答案:

答案 0 :(得分:3)

试试这个:

while($row = mysql_fetch_array($result))$arr_data[] = $row;

此类行为的原因是您将mysql_fetch_array()结果附加到数组,而不检查它是否已成功检索。

截至manual

  

返回与获取的行对应的字符串数组,或   如果没有更多行,则为FALSE。


注意: MySQL mysql * _ functions)扩展名为deprecated。我建议改用MySQLi mysqli * _函数)或PDO