【发布时间】: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->fetch_assoc();时线路是否丢失?