我从MYSQL数据库获取数据并通过结果循环,但它只返回一行!任何人都可以解释什么是错误的
function getAll()
{
global $con;
$SQL = "SELECT * FROM users";
$stmt = $con->query($SQL);
if($stmt->num_rows > 0){
while($row = $stmt->fetch_row())
{
return $row;
}
}
}
答案 0 :(得分:4)
返回应该在while循环之外!
以下是获取所有行的方法:
function getAll()
{
global $con;
$SQL = "SELECT * FROM users";
$stmt = $con->query($SQL);
if($stmt->num_rows > 0){
$arr = array();
while($row = $stmt->fetch_row())
{
$arr[] = $row;
}
return $arr;
}
}
或者你可以做这样的事情返回一个生成器并循环遍历:
function getAll()
{
global $con;
$SQL = "SELECT * FROM users";
$stmt = $con->query($SQL);
if($stmt->num_rows > 0){
while($row = $stmt->fetch_row())
{
yield $row;
}
}
}
在此处查看结果!
echo '<pre>';
foreach (getAll() as $value) {
print_r($value);
}
答案 1 :(得分:0)
一旦你点击一个return语句,该函数的所有执行都会停止。你不能多次返回。
您可以返回所有行的数组:
function getAll()
{
global $con;
$SQL = "SELECT * FROM users";
$stmt = $con->query($SQL);
if($stmt->num_rows > 0) {
while($row = $stmt->fetch_row())
{
$array[] = $row;
}
return $array;
}
}
或者将它用作生成器(可能不是你想要的):
function getAll()
{
global $con;
$SQL = "SELECT * FROM users";
$stmt = $con->query($SQL);
if($stmt->num_rows > 0){
while($row = $stmt->fetch_row())
{
yield $row;
}
}
}