所以,我正在学习 PHP 和 MySQL ,但我在这里遇到了一些问题。
我确实缺少一些信息,所以这对我非常有帮助=)
我对我的数据库进行查询,并得到一个结果。这个结果是我列出的所有图像文件。
$fileSQL = $mysqli->query("
SELECT *
FROM content
WHERE projID=$projectID
");
所以,如果我想在我的页面上将所有文件列为缩略图,我会这样做:
<?php while($row = $fileSQL->fetch_assoc()){ ?>
<img src="assets/<?=$row['contentFull']?>" id="thumbImg"
onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>
<?php } ?>
现在,这当然可行。它遍历所有行,同时为每个行添加一个。
但是,我也有一个主图像,我需要完整显示第一个拇指(对于这个例子,我使用contentFull
拇指和全尺寸)。
现在,我如何获得第一行的contentFull
,而不使while循环从第nr行开始?
总的来说;在这些情况下,最好的办法是什么?首先将结果存储到数组中,这样我就可以轻松访问它,或者执行它的“正常”方式是什么? =)
我需要什么:
提前致谢,如果您需要更多信息,请告诉我们=)
答案 0 :(得分:1)
一个简单的选择是:
<?php
$first = null;
while($row = $fileSQL->fetch_assoc()) {
if(!isset($first)) $first = $row;
?>
<img src="assets/<?=$row['contentFull']?>" id="thumbImg"
onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>
<?php } ?>
现在您将第一行存储在要使用的变量中,而不必将所有结果存储在数组中。如果由于某种原因你想要存储在数组中的所有行,你可以简单地这样做:
<?php
$rows = array();
while($row = $fileSQL->fetch_assoc()) {
$rows[] = $row;
//rest of code
}
?>
然后您可以通过引用$rows[0]
另一种选择是不使用php来填充完整的图像。而是使用javascript调用来填充第一张图片。
答案 1 :(得分:0)
我认为您可以在while
循环之外拍摄第一张照片:
$row = $fileSQL->fetch_assoc(); // the first picture
if($row){
// show first image if it exists
}
while ( $row = $fileSQL->fetch_assoc()) // etc.
较大图像的代码可能与其他图像不同,因此可能是合理的。如果没有,请考虑定义一个函数,或者使用一个计数器(或者像Pitchinnate的answer中那样的标记)。