为什么这只显示我的一条记录?

时间:2012-07-24 09:44:17

标签: php pagination

我正试图在我的网站上进行分页。一切都应该工作,但这只显示一个产品,但应该是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>&euro;'.htmlspecialchars($row[3]).'</h6></div></div>';
};
echo '&nbsp;';
echo '<br><br><div style="margin-left:330px;">';
echo $pages->display_pages();
echo '</div>';
}
?>      

4 个答案:

答案 0 :(得分:3)

mysql_fetch_row()一次只能获取一行。您需要反复调用它来显示所有行,如下所示:

while ($row = mysql_fetch_row($result)) {
    // handle single row
}

我建议您考虑使用mysql_fetch_array()。然后,您将不再需要依赖列的顺序,并且您的代码变得更加清晰: $row[0]变为$row["serial"]等。

尝试阅读@Kush链接的文章。有关特定于PHP的讨论,请参阅here

答案 1 :(得分:1)

您似乎没有正确使用mysql_fetch_row()


以下代码容易受到SQL injection攻击,因为$ page-&gt;限制似乎没有被清理

$query = "SELECT serial, name, description, price, picture FROM products WHERE serial != '' ORDER BY serial ASC $pages->limit";

停止使用mysql_ *函数,因为它们已被弃用。请改用PHP database objects (PDO),因为PDO允许参数绑定,以保护您免受sql注入。

您可以阅读使用PDO here

答案 2 :(得分:0)

因为这行

$row = mysql_fetch_row($result);

应该是

while($row = mysql_fetch_row($result)){...

答案 3 :(得分:0)

更改行

$row = mysql_fetch_row($result); 

while ($row = mysql_fetch_row($result))