我有一个功能
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操作。 谢谢
答案 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
循环内部有一个返回,它正在终止该循环并返回第一行数据。