我正在尝试在我的网站上进行分页。一切都应该正常,但这只显示了一个产品,但应该是8个产品。有人知道怎么了吗?提前谢谢。
else {
$query = "SELECT COUNT(*) FROM products";
$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_fetch_row($result);
$pages = new Paginator;
$pages->items_total = $num_rows[0];
$pages->mid_range = 9;
$pages->paginate();
$query = "SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_row($result);
{
echo '<div style="margin-bottom:10px;display:inline-block;background-color:#E3E3E3;width:190px;height:200px;"><a href="'.$_SERVER['PHP_SELF'].'?serial='.$row[0].'"><img style="padding-top:10px;padding-left:25px;width:150px;height:150px;" src="'.htmlspecialchars($row[4]).'"></a><br><div align="center"><b>'.htmlspecialchars($row[1]).'</b><br><h6>€'.htmlspecialchars($row[3]).'</h6></div></div>';
};
echo ' ';
echo '<br><br><div style="margin-left:330px;">';
echo $pages->display_pages();
echo '</div>';
}
?>
mysql_fetch_row()
一次只获取一行。您需要反复调用它来显示所有行,如下所示:
while ($row = mysql_fetch_row($result)) {
// handle single row
}
我建议您考虑使用mysql_fetch_array()
。这样,您就不必再依赖列的顺序了,您的代码也变得更加清晰:$row[0]
变为$row["serial"]
等
试着阅读@Kush链接的文章。有关PHP特定讨论,请参阅此处。
您似乎没有正确使用mysql_fetch_row()
以下代码容易受到SQL注入的攻击,因为$page->limit似乎没有经过净化
$query = "SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit";
停止使用mysql_*函数,因为它们已被弃用。使用PHP数据库对象(PDO),因为PDO允许参数绑定,从而保护您不受sql注入的影响。
您可以在此处阅读有关使用PDO的信息
因为这条线
$row = mysql_fetch_row($result);
应该是
while($row = mysql_fetch_row($result)){...
更改行
$row = mysql_fetch_row($result);
至
while ($row = mysql_fetch_row($result))