【问题标题】:Get some desired rows from table by its order按顺序从表中获取一些所需的行
【发布时间】:2018-12-27 05:09:41
【问题描述】:

我正在为一个显示数据库表的页面工作。假设我有 100 行。如何显示第 21-30 行?

在表格中,有一些字段,不仅是电子邮件、姓名和描述。所以,我用mysqli_fetch_assoc

for($num=21;$num<=30;$num++){
  $row=mysqli_fetch_assoc($result);
  echo "<tr>";
  echo "<td>".$num."</td>";
  echo "<td>".$row['email']."</td>";
  echo "<td>".$row['name']."</td>";
  echo "<td>".$row['description']."</td>";
  echo "</tr>";
}

$num 显示了所需的数字,但表格本身显示了从 1 日到 10 日的数据。我希望它显示 21 日至 30 日的数据

【问题讨论】:

  • 你试过 LIMIT 吗?理想情况下,它的工作方式类似于 SELECT * from MYTABLE LIMIT 21,30 ;这将返回第 21-30 行
  • 应该是LIMIT 20, 10(获取从第21行开始的10条记录)
  • 在循环中删除这个$row=mysqli_fetch_assoc($result);,并考虑使用 if 语句进入行间。
  • @satya 不,它不会。除了由 ORDER BY 子句定义的之外,sql 中的行没有其他顺序

标签: php mysql phpmyadmin


【解决方案1】:

您已经可以使用 sql 查询修复您的代码(以获得更快的性能)添加 LIMIT 20、10(从第 21 行开始获取 10 条记录)

但是如果您有其他逻辑要应用于您的代码(就像您显示动态记录一样)

$row=mysqli_fetch_assoc($result);
for($num=0; $num<=$result->num_rows; $num++) {
    if($num>=21 && $num<=30){
        echo "<tr>";
        echo "<td>".$num."</td>";
        echo "<td>".$row['email']."</td>";
        echo "<td>".$row['name']."</td>";
        echo "<td>".$row['description']."</td>";
        echo "</tr>";
    }
}

您可能会考虑使用 foreach

$row=mysqli_fetch_assoc($result);
$num = 0;
foreach (range(21, 30) as $row) {
    $num++;

    echo "<tr>";
    echo "<td>".$num."</td>";
    echo "<td>".$row['email']."</td>";
    echo "<td>".$row['name']."</td>";
    echo "<td>".$row['description']."</td>";
    echo "</tr>";
}

【讨论】:

    【解决方案2】:

    请尝试使用 sql 查询,在该查询中定义了行限制,例如从第 1 行开始到第 1 行结束。我在下面写了一个 sql 查询:

    语法

    SELECT column1, column2, ...
    FROM table_name
    LIMIT offset, count;
    

    示例

     SELECT * from MYTABLE LIMIT 20,10;
    

    【讨论】:

      【解决方案3】:

      你可以这样做的两种可能性

      第一

      SELECT * from MYTABLE LIMIT 20, 10

      第二

      // 0,1,2,3....19 19 is record of 20
      for($num=19;$num<=29;$num++){
      
       }
      

      【讨论】:

      • 从数据库中请求比您显示的更多数据的建议充其量是低效的。将数据查询、限制和排序留给数据库是一个更好的主意。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-20
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      相关资源
      最近更新 更多