0

我有一个循环,应该显示所有 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>";

}

非常感谢您!

4

4 回答 4

3

那是因为您只获取了第一行(当您获取时$res = mysql_fetch_assoc($result);)。您尝试做的实际上是不必要的:mysql_fetch_assoc()每次运行时都会自动将数据指针向前移动。你可以做的(实际上是常见的做法)是这样的:

//...
while ($res = mysql_fetch_assoc($result)) {
    echo "<a href='#'>{$res['dealer']}</a><br />";
}
//...

另一方面,这些mysql_*功能很快就会被弃用。您可以使用mysqliPDO代替;如果你是一个懒惰的流浪汉,有很多代码需要切换(像我一样),你可以使用mysqli过程函数——它们几乎与原始mysql_*函数相同。

于 2012-08-02T20:33:39.547 回答
1

你应该使用

$res = mysql_fetch_assoc($result);

每次要检索新行时

于 2012-08-02T20:31:14.950 回答
1

您必须循环中执行此操作:

$res = mysql_fetch_assoc($result);

...因为否则只会拉出第一个结果。这是正确的方法:

while($res = mysql_fetch_assoc($result)){
    echo "<a href='#'>".$res['dealer']."</a><br>";
    i++;
}

干杯

于 2012-08-02T20:31:54.963 回答
0

利用:

while($res = mysql_fetch_assoc($result)) { echo $res['dealer']; }

于 2012-08-02T20:33:25.647 回答