PHP函数没有返回MySQL表中的所有数据

时间:2016-04-18 17:59:10

标签: php mysql mysqli

我有一个功能

    function get_table_content(){
$sql = "SELECT * FROM my_table WHERE id > 0";
$result = $this->query($sql);
while ($row = $this->fetch($result)){
return ($row);
}
}

问题是,当我调用此函数时,它只返回数据库中的第一个条目。 我怎么能做这个工作,它假设返回表中的所有数据。 我也尝试了这个并且它也不起作用

    function get_table_content(){
    global $database_connection;
    $sql = "SELECT * FROM my_table WHERE id > 0";
    $result = mysqli_query($database_connection, $sql);
    while ($row = mysqli_fetch_assoc($result)){
    return ($row);
    }
    }

我认为最好的方法是返回一个数组并对其进行foreach操作,但我无法使其工作。

有人能帮助我吗? P.S我会让它返回数据中所有数据的数组,这样我就可以对它进行foreach操作。 谢谢

3 个答案:

答案 0 :(得分:5)

return会在循环的第一次迭代期间立即停止执行您的函数。要获取所有记录并将其返回:

$result = mysqli_query($database_connection, $sql);
return mysqli_fetch_all($result);

附注:这比返回结果集资源并在函数外部根据需要循环遍历它效率低。 fetch_all必须将所有结果转换为数组,然后可能是您稍后循环遍历此数组。

答案 1 :(得分:2)

问题是,在从结果集中获取一行之后的while循环中,您将从函数返回结果,因此您只得到结果集中的第一行。使用mysqli_fetch_all()函数或while循环中的数组来存储结果。

方式(1):

function get_table_content(){
    global $database_connection;
    $sql = "SELECT * FROM my_table WHERE id > 0";
    $result = mysqli_query($database_connection, $sql);

    return mysqli_fetch_all($result);
}

方式(2):

function get_table_content(){
    global $database_connection;
    $sql = "SELECT * FROM my_table WHERE id > 0";
    $result = mysqli_query($database_connection, $sql);

    $r = array();
    while ($row = mysqli_fetch_assoc($result)){
        $r[] = $row;
    }
    return $r;
}

答案 2 :(得分:1)

你的while循环内部有一个返回,它正在终止该循环并返回第一行数据。