PHP mysql_num_rows"没有结果"信息?

时间:2012-01-03 02:38:43

标签: php mysql search-engine mysql-num-rows

我的网站上有一个MySQL关键字搜索,它运行正常。问题是当有人搜索我没有添加的关键字时,结果页面上没有显示任何内容。

我没有显示任何内容,而是希望收到no results found消息。

所以我使用下面的代码:

if (mysql_num_rows($Recordset1) > 0) {
    // no results
    echo 'No results found.';
} else {
    do {
    // output
    } while($res = mysql_fetch_assoc($Recordset1));
}

问题是每当我搜索一个知道它在我的数据库中的关键字时,我会得到我的结果以及no results found消息。 (我的网页左上方也会显示no results found消息,推送整个网站。)

当我搜索一个我知道不在我的数据库中的关键字时,我根本没有收到任何消息,它没有像以前那样显示。

我玩过更大,更少,更平等的标志并遇到了类似的问题。我被告知我的逻辑是倒退的,但我不确定它应该是什么样的。

非常感谢任何帮助,提前谢谢。

4 个答案:

答案 0 :(得分:1)

do {} while循环不适合数据库提取,除非在进入循环之前进行行提取。对于输出部分的第一次迭代,将不会从数据库中获取任何结果,因此您将基本上不输出任何内容。

如果没有结果,mysql_num_rows()将返回0,所以你实际上是反转了elogic,说实际上没有行。即使单行结果也会使> 0返回true并输出“无结果”。

答案 1 :(得分:1)

if (mysql_num_rows($Recordset1) == 0) {
// no results
echo 'No results found.';
} else {
while($res = mysql_fetch_assoc($Recordset1)) {
// output
}
}

尝试一下......

1。)如果没有结果则mysql_num_rows为0 2.)在获得输出之前,您应该将其提取到变量而不是在使用它之后

答案 2 :(得分:0)

if (mysql_num_rows($Recordset1) == 0) {
 . . .

答案 3 :(得分:0)

将您的if条件更改为

if (mysql_num_rows($Recordset1) == 0) {

当您使用> 0时,表示“有结果”且“未找到结果”。