我有一个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消息也会出现在我网页的左上角,将我的整个网站推向下。)
当我搜索一个我知道不在我的数据库中的关键词时,我根本没有得到一条消息,它显示的不是以前的任何东西。
我使用了大号、小号和等号,也遇到了类似的问题。我被告知我的逻辑是倒退的,但我不确定它应该是什么样子。
任何帮助都将不胜感激,提前感谢。
发布于 2012-01-03 10:41:38
do {} while循环不适合数据库提取,除非您在进入循环之前进行了行提取。对于输出节的第一次迭代,不会从数据库获取任何结果,因此基本上什么也不会输出。
如果没有结果,mysql_num_rows()将返回0,所以你实际上是在颠倒逻辑,说没有行,而实际上有行。即使只有一行结果,也会使> 0返回true并输出“无结果”。
发布于 2012-01-03 10:57:17
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-03 10:40:33
if (mysql_num_rows($Recordset1) == 0) {
. . .https://stackoverflow.com/questions/8707362
复制相似问题