繁体   English   中英

MySQL和PHP:一次查询3行

[英]MySQL & PHP: querying 3 rows at a time

我正在使用数据库处理照片库。 每行重置前,将显示3张图像。 格式为<img>/<img>/<img>/<div>

因此,在查看源代码时,您将拥有:

<img src="1" alt="">
<img src="2" alt="">
<img src="3" alt="">
<div class="clear-both"></div>

并且它将继续对数据库中的每一行重复此操作。 因此9张图片将是:

<img src="1" alt="">
<img src="2" alt="">
<img src="3" alt="">
<div class="clear-both"></div>
<img src="4" alt="">
<img src="5" alt="">
<img src="6" alt="">
<div class="clear-both"></div>
<img src="7" alt="">
<img src="8" alt="">
<img src="9" alt="">
<div class="clear-both"></div>

我想我可以用些while来解决这个问题。 但是我不知道要添加什么SQL或PHP语句。 我考虑过使用WHEREGROUP BYCOUNT ,但是这些都不起作用。

如果可能的话,我也希望它能够仅处理1和2张图像。 意味着如果表中有4行,那么它将显示:

<img src="1" alt="">
<img src="2" alt="">
<img src="3" alt="">
<div class="clear-both"></div>
<img src="4" alt="">
<div class="clear-both"></div>

如果有8,则将显示:

<img src="1" alt="">
<img src="2" alt="">
<img src="3" alt="">
<div class="clear-both"></div>
<img src="4" alt="">
<img src="5" alt="">
<img src="6" alt="">
<div class="clear-both"></div>
<img src="7" alt="">
<img src="8" alt="">
<div class="clear-both"></div>

谢谢您的帮助。

的PHP

$Database4 = new mysqli("localhost", "user", "pass", "Photography");
$Photos = $Database4 -> query("SELECT *
                               FROM `Year2016`
                               -- ORDER BY DateTaken
                               ;");

while ($DataRows = $Photos -> fetch_array()) {
 echo '<img src="photography/small/' . $DataRows["file"] . '" alt="">' . "\n";
}

echo '<div class="clear-both"></div>' . "\n";

的SQL

CREATE TABLE `Year2016`(
 `file` text COLLATE utf8_bin NOT NULL,
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8
COLLATE = utf8_bin;

INSERT INTO `Year2016`(`file`)
VALUES
('red-1.png'),
('red-2.png'),
('red-3.png'),
('red-4.png'),
('red-5.png'),
('red-6.png');

这很容易做到:

$i = 1;    // special counter
while ($DataRows = $Photos -> fetch_array()) {
    echo '<img src="photography/small/' . $DataRows["file"] . '" alt="">' . "\n";
    if ($i % 3 == 0) {
        echo '<div class="clear-both"></div>';
    }
    $i++;
}
// the last one if last `$i` value is not divided by 3
if ($i % 3 != 1) {
    echo '<div class="clear-both"></div>';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM