为什么PHP函数返回只有mysql中的一行

时间:2017-06-01 02:02:35

标签: 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())
        {
            return $row;
        }
    }
 }

2 个答案:

答案 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;
        }
    }
}