当前位置: 首页 > 知识库问答 >
问题:

如何在PHP中将SQL查询结果分割成块

邓光赫
2023-03-14

我试图使用PHP将查询结果分解成块,但似乎不知道如何制定查询或循环,将结果分解成四个批次,并用特定的超文本标记语言元素包围这四行。

内容特别是一个摄影作品集,我只是尝试一行一行地显示照片,但我需要的样式要求每一行基本上是一组独立的信息。

这是我到目前为止使用的代码:

<ul class="no-bullet">
<?php

require("connect.php");
$query = "SELECT * FROM dv_photo_work LIMIT 4";

$result = mysql_query($query, $link);
while ($row = mysql_fetch_array($result)) {
  print('
     <li><img alt="'.$row["img_title"].'" src="'.$row["img_slug"].'></li>');
}


?>
</ul>

不过,我只希望列表中有四张图片。然后是另一个列表中的另外四个。您能帮我重新格式化循环,使其返回四条记录,然后开始另一个列表中以下四条记录的新查询吗?数据库中将有大约100条记录,我将从中检索它,因此它必须能够继续,直到列出整个表。

我想这类似于分页过程,但这是我不熟悉的另一种技术。我假设这是对查询和标记的一个简单调整,但是我可以理解这需要比简单修复更大的代码创造力。

非常感谢,

乔希

共有3个答案

毕和志
2023-03-14

获取所有结果,将其读入多维数组,然后使用array_chunk()将其拆分为组。

$query = mysql_query("SELECT * FROM dv_photo_work",$link);
$results = array();
while($line = mysql_fetch_array($query, MYSQL_ASSOC)){
    $results[] = $line;
}
$lists = array_chunk($results,4);
foreach ($lists as $list) {
    echo '<ul>';
    foreach ($list as $result) {
        echo '<li><img alt="'.$result["img_title"].'" src="'.$result["img_slug"].'></li>'
    }
    echo '</ul>';
}
单于楚
2023-03-14

第一将该逻辑从html中移开,这样可以让您更清楚地看到问题。第二两个类呢?一个表示n长度查询结果列表的类a。类A应该是迭代器,因此类B可以提取任意长度的结果块,并返回大小适当的结果对象。也许还有第三个类,其实例表示大小受限的结果。因此,在所有三个类中,A代表一个完整的结果列表,B作用于A并返回C的实例,这些实例将代表大小受限的结果块。

这本来是一条评论,但太长了,所以我不得不给它一个答案(如果太“教人钓鱼”了,我很抱歉,我只是不想写php…)

宫坚
2023-03-14

试试这个

<ul class="no-bullet">
<?php
require("connect.php");
$query = "SELECT * FROM dv_photo_work";
$result = mysql_query($query, $link);
$i =1;
while($row = mysql_fetch_array($result)) {
   print('<li><img alt="'.$row["img_title"].'" src="'.$row["img_slug"].'></li>');
   if ($i%4 == 0) echo "</ul><ul class='no-bullet'>";
   $i++;
}
?>
</ul>
 类似资料:
  • 问题内容: 我正在尝试从sql数据库中的php中显示结果,MySQL语句是正确的,并且可以在phpMyAdmin中执行我想要的操作,但是由于某种原因,我的代码在网页中中断了 这是代码 这就是我得到的 通常,我需要由表ID限制从最小值到最大值的随机数 问题答案: 您需要从查询获得的结果集中的每一行中获取数据。您可以为此使用。 将代码更改为此:

  • 问题内容: 我有连接3个表的SQL查询,一个表只是将其他两个表连接起来的多对多表。我使用Spring JDBCResultSetExtractor将ResultSet转换成我的Objects,看起来像这样: ResultSetExtractor实现如下所示: 无需分页即可正常工作。 但是,我需要对这些结果进行分页。我通常的做法是将其添加到查询中,例如: 但是,由于此查询具有联接,因此当我限制结果数

  • 问题内容: 我想知道是否可以限制SQL请求的结果? 例如,最多只返回以下内容的50行: 谢谢。 问题答案: 是的,这是可能的。这在数据库引擎之间有所不同。 Postgres: SQL Server: …

  • 问题内容: 我非常确定我们不能将LIMIT子句用于我想做的事情-因此想确定是否还有其他方法可以实现此目的。 我有一个表,其中捕获了哪个用户访问了哪个商店。每次用户访问商店时,都会在此表中插入一行。 一些领域是 shopping_id(primary key) store_id user_id 现在,我想要的是-对于给定的一组商店,找到访问该商店的最大次数的前5位用户。 我可以一次在1个商店中进行以

  • 问题内容: 在这个问题上的任何帮助将不胜感激。 所以基本上我想对我的SQL数据库运行查询并将返回的数据存储为Pandas数据结构。 我已附上查询代码。 我正在阅读有关Pandas的文档,但是在识别查询的返回类型时遇到了问题。 我试图打印查询结果,但没有提供任何有用的信息。 谢谢!!!! 因此,我有点想了解变量“ resoverall”的格式/数据类型是什么,以及如何将其与PANDAS数据结构一起使

  • 问题内容: 我已经编写了此查询以获取一些结果,如果我想将结果保存在数组中我该怎么办?我想在IF语句中使用col1和col2中的值,这就是为什么我正在考虑将它们保存在数组中的原因。 问题答案: 通常我为此使用一个类: 现在,您可以使用循环来填充列表,如果您确实需要数组: 请注意,我假定第一列是a ,第二列是a 。只是为了证明C#是类型安全的,以及如何使用这些方法。