为什么PHP函数只从mysql返回一行

为什么PHP函数只从mysql返回一行,php,mysql,Php,Mysql,我正在从MYSQL数据库获取数据并循环遍历结果,但它只返回一行!!!有人能解释什么不对吗 function getAll() { global $con; $SQL = "SELECT * FROM users"; $stmt = $con->query($SQL); if($stmt->num_rows > 0){ while($row = $stmt->fetch_row()) {

我正在从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;
        }
    }
 }

返回应该在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);
}
echo';
foreach(getAll()作为$value){
打印(价值);
}

返回应该在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);
}
echo';
foreach(getAll()作为$value){
打印(价值);
}

一旦点击返回语句,该函数的所有执行都将停止。您不能多次返回

您可以返回所有行的数组:

function getAll()
{
    global $con;

    $SQL  = "SELECT * FROM users";

    $stmt = $con->query($SQL);

    if($stmt->num_rows > 0){

        while($row = $stmt->fetch_row())
        {
            yield $row;
        }
    }
}
或者将其用作发电机(可能不是您想要的):


一旦点击return语句,该函数的所有执行都将停止。您不能多次返回

您可以返回所有行的数组:

function getAll()
{
    global $con;

    $SQL  = "SELECT * FROM users";

    $stmt = $con->query($SQL);

    if($stmt->num_rows > 0){

        while($row = $stmt->fetch_row())
        {
            yield $row;
        }
    }
}
或者将其用作发电机(可能不是您想要的):


非常感谢这就是我想要的:)不客气:)如果你的问题解决了,请接受答案:)非常感谢这就是我想要的:)不客气:)如果你的问题解决了,请接受答案:)我认为没有必要使用循环来获取多行mysqli_获取所有一行。不,这是如何完成的。有一种方法可以一次获取所有内容,但这样做更容易,尤其是使用生成器。我认为不需要使用循环来获取多行mysqli\u fetch\u all-one-liner。不,这就是它的实现方式。有一种方法可以一次获取所有信息,但这样做更容易,尤其是使用发电机。