2012-07-24 122 views
0

我想让分页工作在我的网站上。一切都应该工作,但这只显示一个产品,但应该是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>'; 
} 
?>  

回答

3

mysql_fetch_row()一次只取一行。你需要重复调​​用它来显示所有的行,像这样:

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

我建议你考虑使用mysql_fetch_array()代替。那么你将不再需要依靠列的顺序了,代码变得更清晰: $row[0]变成$row["serial"]

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

+0

感谢您的工作! – Thakkennes 2012-07-24 09:49:30

0

,因为这条线的

$row = mysql_fetch_row($result); 

应该

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

更改线路

$row = mysql_fetch_row($result); 

while ($row = mysql_fetch_row($result)) 
1

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


下面的代码很容易受到SQL injection因为$页面级>限制似乎并没有被消毒

$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

相关问题