Mysql 查询未获得 PHP 中的第一行

Mysql query don't get first row in PHP

我试图在我的数据库中获取最新订单并显示在 php 前端。 问题是当我打印数据时,数组中的第一个元素没有出现。

示例代码

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDatabase";
$db = new mysqli($servername, $username, $password, $dbname);

$counter = 0;

$query = "SELECT * FROM `orders` WHERE `supplier` = '".session('email')."' ORDER BY `id_order` DESC";
if ($result = $db->query($query)){
    if($result->num_rows > 0) { 

        $row = $result->fetch_assoc();
        $ordersArray = array();

        // Set orders data to ordersArray 
        while($row = $result->fetch_assoc()){
            $name = $row["name"];
            $orderID = $row["id_order"];

            $ordersArray[] = array('id_order'=> $orderID,
                                    'name'=> $name, );
        }
        foreach($ordersArray as $row){
            if( $counter <= 4 ){
                echo ($row["name"]);
                echo ($row["id_order"]);
                $counter = $counter + 1;
            }
        }
    } else {
        echo ('<tr><td>No tienes ordenes recientes</td></tr>');
    }
}
$db->close();

示例输出

4
3
2
1

我在数据库中有第五个值应该首先显示,但它没有出现

您在 while 循环开始之前就已经获取了第一行...

    $row = $result->fetch_assoc(); // << first row feteched here
    $ordersArray = array();

    // Set orders data to ordersArray 
    while($row = $result->fetch_assoc()){

删除随机提取:

$row = $result->fetch_assoc();

进行此调用会将结果指针向上移动,但您并未将此行添加到 $ordersArray

或者,如果出于某种原因您确实需要访问 while 循环之外的第一行,请将数据添加到新数组或使用 $result->data_seek(0) 重置指针。