【问题标题】:Mysql query don't get first row in PHP [duplicate]Mysql查询没有在PHP中获得第一行[重复]
【发布时间】:2021-08-25 05:18:51
【问题描述】:

我试图在我的数据库中获取最新订单并显示在 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

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

【问题讨论】:

  • 你可能想证明(不仅仅是对我们,而是对你自己):如果你在 mysql REPL 中运行相同的查询会发生什么?因为这是一个不错的选择,它会找到四行,而不是五行,而且您认为应该匹配的内容可能是“差一个字母”之类的愚蠢的东西。
  • 我试过了,mysql显示5行
  • 然后肯定通过显示由PHP发送到mysql的实际查询来证明这一点,然后复制粘贴你得到的控制台输出当您在 mysql REPL 中运行该查询时。因为否则你只是让人们猜测出了什么问题。请记住根据posting guidelines,将人们理解您的问题所需的所有详细信息添加到您的帖子中。
  • 这就是问题所在,数组显示除了第一行之外的所有行
  • 第一次调用$row = $result-&gt;fetch_assoc();时线路是否丢失?

标签: php mysqli


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    移除随机抓取:

    $row = $result->fetch_assoc();
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 2021-08-13
      • 2013-04-27
      • 2018-02-09
      • 2017-12-24
      • 1970-01-01
      • 2018-07-12
      • 2011-10-26
      相关资源
      最近更新 更多