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