【问题标题】:PHP mysql_num_rows "no results" message?PHP mysql_num_rows“无结果”消息?
【发布时间】:2012-01-03 02:38:42
【问题描述】:

我的网站上有一个 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 消息也出现在我的网页左上角,将我的整个网站向下推。)

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

我玩弄了大于、小于和等号,也遇到了类似的问题。有人告诉我我的逻辑是倒退的,但我不确定它应该是什么样子。

任何帮助将不胜感激,在此先感谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      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.) 在获得输出之前,您应该在使用它之后将其提取到变量中

      【讨论】:

        【解决方案3】:
        if (mysql_num_rows($Recordset1) == 0) {
         . . .
        

        【讨论】:

        • 由于某种原因,这使我的搜索停止工作。
        【解决方案4】:

        将 if 条件更改为

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

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

        【讨论】:

        • 由于某种原因导致我的搜索停止工作
        猜你喜欢
        • 1970-01-01
        • 2017-12-14
        • 2013-12-25
        • 1970-01-01
        • 1970-01-01
        • 2014-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多