0

这很好用,除了最后一行总是返回 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,但是在别人开发的网站上捡到的)

4

1 回答 1

3

尝试这个:

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

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

截至manual

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


注意: MySQLmysql *_ 函数)扩展已弃用。我建议使用MySQLimysqli *_ 函数)或PDO代替。

于 2013-05-08T02:40:29.913 回答