我花了好几个小时努力完成这项工作。搜索的解决方案没有帮助我,所以我终于要求了。
我要做的是:如果找不到结果,则显示消息。
这就是我所拥有的,目前我的工作令我失望。
$sql = mysql_query("SELECT * FROM cover WHERE MATCH(keyword,description,categories) AGAINST('$search_key' in boolean mode) ORDER BY id DESC LIMIT $from , $perPage");
$i=1;
while($result = mysql_fetch_object($sql)) {
$keyword = $result->keyword;
$img = $result->img;
$description = $result->description;
if($img != null) { DO THIS;
if($i==2) { require_once(dirname(__FILE__).'/page.php'); }
$i++; }
}
if($img == null) { print "<center>No Results Found</center>"; }
我不知道如何使用 mysql_num_rows (这是我见过的最流行的网站解决方案),它会返回错误,我认为它没有与mysql_fetch_object($sql)
配合良好?我不认为:$img = $result->img;
也适用于mysql_num_rows。
我只是试图找到一种方法来做到这一点,而无需修改括号内的任何内容,只需修改外部的内容。
当我说“不工作”时,我的意思是它没有显示如果找不到结果应该显示的消息。我已经测试了if($img != null) { print "<center>No Results Found</center>"; }
并且它工作正常,它显示了消息。但它似乎没有其他方式,我现在只是困惑。
答案 0 :(得分:1)
如果您对mysql_num_rows有疑问,请查看您的索引:
$i = 1;
如果没有结果,那么循环后的值仍然是1,所以你需要在循环时检查AFTER:
if($i == 1) { print "<center>No Results Found</center>"; }
答案 1 :(得分:0)
您可以像这样使用
if(mysql_num_rows($result) <= 0);
{
echo 'There is no result';
}
else
{
your code
}
以下是您的代码
中的实现 $sql = mysql_query("SELECT * FROM cover WHERE MATCH(keyword,description,categories) AGAINST('$search_key' in boolean mode) ORDER BY id DESC LIMIT $from , $perPage");
$i=1;
$result = mysql_fetch_object($sql);
if(mysql_num_rows($result) > 0 )
{
while($result) {
$keyword = $result->keyword;
$img = $result->img;
$description = $result->description;
if($img != null) { DO THIS;
if($i==2) { require_once(dirname(__FILE__).'/page.php'); }
$i++; }
}
if($img == null) { print "<center>No Results Found</center>"; }
}
else
{
echo 'There is no result';
}
答案 2 :(得分:0)
你的问题是while()循环仅在返回结果时发生,因此在此内部永远不会引发NULL比较。
我建议您需要重新排序代码:
$sql = mysql_query("SELECT * FROM cover WHERE MATCH(keyword,description,categories) AGAINST('$search_key' in boolean mode) ORDER BY id DESC LIMIT $from , $perPage");
$numResults = mysql_num_rows($sql);
if ($numResults === 0) { // mysql_query returned no results
print "<center>No Results Found</center>";
} else {
require_once(dirname(__FILE__).'/page.php');
while($result = mysql_fetch_object($sql))
{
$keyword = $result->keyword;
$img = $result->img;
$description = $result->description;
}
}
答案 3 :(得分:0)
以下内容可行:
$sql = mysql_query("SELECT * FROM cover WHERE MATCH(keyword,description,categories) AGAINST('$search_key' in boolean mode) ORDER BY id DESC LIMIT $from , $perPage");
if(mysql_num_rows($sql) > 0)
{
$i=1;
while($result = mysql_fetch_object($sql))
{
$keyword = $result->keyword;
$img = $result->img;
$description = $result->description;
if($img != null)
{
DO THIS;
if($i==2)
{
require_once(dirname(__FILE__).'/page.php');
}
$i++;
}
}
}
else
{
print "<center>No Results Found</center>";
}
如果您只是直接使用$result
,我认为您没有理由将$result->keyword
的值存储到单独的变量中。