如何使用 php 显示 MySQL 数据库中的小数和日期数组

How to display Decimal and Date Arrays from MySQL database using php

我很难在网页上显示价格和日期。

下面是我现有代码的一部分。 MYSQLI_ASSOC 部分显示正确的数据,但代码的 MYSQLI_NUM 部分根本不显示。我无法找到有关如何使其工作的信息。

 <?php
    $query = "SELECT ItemID, Name, Category, Price, Duration, Photo FROM 
    item ORDER by ItemID LIMIT 3";
    $result = $mysqli->query($query);

  if ($result->num_rows > 0) {
     // output data of each row
     while($row = $result->fetch_array(MYSQLI_ASSOC)) {
         echo "<br> Row: ". $row["ItemID"]. " - Name: ". $row["Name"]. "<br> " . $row["Category"] .  "<br>" ;
   }
    } else {
      echo "0 results";
  }

    if ($result->num_rows > 0) {
     // output data of each row
     while($row = $result->fetch_array(MYSQLI_NUM)) {
       echo "<br> Price: ". $row["Price"]. " - Finish Time: ". $row["Duration"]. "<br> ";
   }
    } else {
      echo "0 results";
  }
?>

MYSQLI_NUM是某列的'ordinal position',从0开始到查询结果的第一列,1为下一列,2为下一个,以此类推。例如,如果 'Price' 列首先出现在查询结果中,它将是 $row[0],但在您的查询中,它当前位于 $row[3]。否则,使用与列查询的正确位置对应的数字。

查看示例:http://php.net/manual/en/mysqli-result.fetch-row.php

另外,请注意,因为第一个循环在第二个循环之前循环了记录集,所以您需要重置列表以避免查询两次。

if ($result->num_rows > 0) {
 // output data of each row
 $result->data_seek(0); // set the recordset back to the first row.

 while($row = $result->fetch_array(MYSQLI_NUM)) {

MYSQLI_BOTH,这是默认值,return 是一个数组,因此您可以按列名或按列号使用行结果。

======

知道许多人不喜欢使用列顺序编号,除非是非常小的查询,例如 return 单行,通常只有一列的查询,例如计数查询。原因是如果一个更大的查询改变了列排序,那么代码必须是 'scoured' 以确保更新查询的列位置编号 align/match 发生变化。