我有一个循环,应该显示所有MySQL结果的摘要。它通过确定可能出现的结果来实现这一点,然后循环多次。因此,如果有43个结果与我的查询相匹配,它不会显示所有43个结果,而是只显示第一个结果43次。请帮忙!这是我的代码:
if (empty($res)) {
echo 'No results found';
} else if($num>1){
echo "<b>".$num_rows."<b> results found...<br>";
while ($res = mysql_fetch_assoc($result)) {
echo "<a href='#'>{$res['dealer']}</a><br>";
}
} else {
echo "<table border='"0'"><tr><td colspan='"2'"><span class='"dealer'">" . $res['dealer'] . "</span></td></tr><tr><td><span class='"label'">Pin: </span><span class='"inf'">" . $res['pin'] . "</span></td><td><span class='"label'">OB CODE: </span><span class='"ob'">" . $res['ob'] . "</span></td></tr><tr><td><span class='"label'">Program Director:</span></td><td><span class='"inf'">" . $res['contact'] . "</span></td></tr><tr><td valign='"top'"><span class='"label'">Address:</span></td><td><span class='"inf'">" . $res['address'] . "<br>" . $res['city'] . ", " . $res['state'] . "<br>" . $res['zip'] . "</span></td></tr><tr><td><span class='"label'">Dealer Phone:</span></td><td><span class='"inf'">" . $res['phone'] . "</span></td></tr><tr><td><span class='"label'">Codes Valid on:</span></td><td><span class='"inf'">" . $res['website'] . "</span></td></tr></table>";
}
提前感谢!
这是因为您只提取了第一行(当您执行$res = mysql_fetch_assoc($result);
时)。您尝试做的实际上是不必要的:mysql_fetch_assoc()
每次运行时都会自动向前移动数据指针。你可以做的(事实上是常见的做法)是:
//...
while ($res = mysql_fetch_assoc($result)) {
echo "<a href='#'>{$res['dealer']}</a><br />";
}
//...
附带说明一下,mysql_*
函数很快就会被弃用。您可以使用mysqli
或PDO
;如果你是一个懒惰的流浪汉,有很多代码要切换(像我一样),你可以使用mysqli
过程函数——它们几乎与最初的mysql_*
函数相同。
您应该使用
$res = mysql_fetch_assoc($result);
每次要检索新行时
你必须在你的循环中这样做:
$res = mysql_fetch_assoc($result);
否则只会得到第一个结果。以下是正确的方法:
while($res = mysql_fetch_assoc($result)){
echo "<a href='#'>".$res['dealer']."</a><br>";
i++;
}
干杯
使用:
while($res = mysql_fetch_assoc($result)) {
echo $res['dealer'];
}