1

我在我的网站上有一个 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

4 回答 4

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.) 在获取输出之前,您应该在使用它之后将其提取到变量中

于 2012-01-03T02:57:16.757 回答
1

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

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

于 2012-01-03T02:41:37.980 回答
0
if (mysql_num_rows($Recordset1) == 0) {
 . . .
于 2012-01-03T02:40:32.720 回答
0

将您的 if 条件更改为

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

当您使用> 0它时,表示“有结果”而不是“未找到结果”。

于 2012-01-03T02:42:28.277 回答