如何在while循环中访问以前的fetch_assoc数据?
问题描述:
我试图从当前数据集中的数据库select语句中读取前一行数据。如何在while循环中访问以前的fetch_assoc数据?
我当前的代码如下所示:
<?php
$lib = $_GET["lib"];
include "connect.php";
$sql = "SELECT Image, text, link FROM library WHERE Type = '$lib'";
$result = $conn->query($sql);
$count = 1;
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if ($count <= 6) {
if ($count == 1) {
echo "<tr>";
}
echo "<td align='center'>";
echo "<a href='".$row["link"]."'><img src='".$row["Image"]."'/></a>";
echo "</td>";
$count++;
if ($count == 7) {
echo "</tr>";
}
} else if ($count >= 7 && $count <= 12) {
if ($count == 7) {
echo "<tr>";
}
echo "<td align='center'>";
echo"<a href='".$row["link"]."'><p>".$row["text"]."</p></a>";
echo "</td>";
$count++;
if($count == 13){
$count = 1;
}
if ($count == 1) {
echo "</tr>";
}
}
}
echo "</tr>";
} else {
echo "No Videos in the ".$lib." Section at this time!";
}
$conn->close();
?>
所以第6行会输出,则7 - 12行将输出,但将使用从以前的6个结果所选择的数据。例如:
$ row [“variable”] [ - 6 results]。我知道这样做的一种方法,但我不记得在执行select语句时处理从数据库返回的数组的方式。
我正在考虑使用$ result-> data_seek(0);但我不确定如何在这种情况下使用它。
答
我已经发现我已经过了复杂的事情。原来,下面的代码做我需要的。只需要在图像中包含相同的文本,而不是仅仅为文本设置新的行。
<?php
$lib = $_GET["lib"];
include "connect.php";
$sql = "SELECT Image, text, link FROM library WHERE Type = '$lib'";
$result = $conn->query($sql);
$count = 1;
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if ($count == 1) {
echo "<tr>";
}
echo "<td align='center'>";
echo "<a href='".$row["link"]."'><img src='".$row["Image"]."'/></a>";
echo"<a href='".$row["link"]."'><p>".$row["text"]."</p></a>";
echo "</td>";
if ($count == 6) {
echo "</tr>";
$count = 0;
}
$count++;
echo $count;
}
echo "</tr>";
} else {
echo "No Videos in the ".$lib." Section at this time!";
}
$conn->close();
?>
感谢任何人为我调查这件事。
您的代码容易受到[** SQL注入**](https://en.wikipedia.org/wiki/SQL_injection)攻击。您应该通过[** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)或[** PDO **](https ://secure.php.net/manual/en/pdo.prepared-statements.php)驱动程序。 [**这篇文章**](https://*.com/questions/60174/how-can-i-prevent-sql-injection-in-php)有一些很好的例子。 –
感谢您的建议,我将在研究这个概念后研究加强代码。它已经有一段时间了,因此在经过3年的休息之后,“把我的脚”放回了编码。 –
标题中提到的问题的明显答案是,如果您稍后需要某些东西,那么将其存储到变量中...很明显,不是吗? – CBroe