如果声明不起作用

时间:2009-06-18 05:04:38

标签: php mysql

如果数据库中“site”列下的任何地方没有$ entry值,我希望下面代码的输出为“$ entry not exists”。但是,当我输入一个我知道不在数据库“站点”列下的$ entry值时,就不会发生这种情况。我的if语句有问题吗?

提前致谢,

约翰

$result = mysql_query("SHOW TABLES FROM feather") 
or die(mysql_error()); 


while(list($table)= mysql_fetch_row($result))
{
  $sqlA = "SELECT COUNT(*) FROM `$table` WHERE `site` LIKE '$entry'";

  $resA = mysql_query($sqlA) or die("$sqlA:".mysql_error());
  if(mysql_num_fields($resA)>0){
  list($isThere) = mysql_fetch_row($resA);
  if ($isThere)
  {
     $table_list[] = $table;
  }
  }
  else{
print "<p class=\"topic\">$entry does not exist</p>\n";
}
}

2 个答案:

答案 0 :(得分:4)

是。你的格式化并不能真正做到这一点,但是,请尝试清理它,以便更容易理解。 NetBeans IDE,甚至是Zend Development Environmont($)都可以进行自动代码格式化,它可以让生活变得更轻松。

$result = mysql_query("SHOW TABLES FROM feather") or die(mysql_error()); 
while(list($table)= mysql_fetch_row($result)) {
    $sqlA = "SELECT COUNT(*) FROM `$table` WHERE `site` LIKE '$entry'";

    $resA = mysql_query($sqlA) or die("$sqlA:".mysql_error());
    if(mysql_num_fields($resA)>0){
        list($isThere) = mysql_fetch_row($resA);
        if ($isThere) {
            $table_list[] = $table;
        }
    } else{
        print "<p class=\"topic\">$entry does not exist</p>\n";
    }
}

简而言之:

mysql_num_fields($ resA)总是大于零,因为COUNT(*)函数将始终返回一个值,无论是(0或1还是1000000等)

要修复,将其他级别提升,我会使用强制更安全。最后,mysql_num_fields并不是必需的,因为你知道它总是1:

$result = mysql_query("SHOW TABLES FROM feather") or die(mysql_error()); 
while(list($table)= mysql_fetch_row($result)) {
    $sqlA = "SELECT COUNT(*) FROM `$table` WHERE `site` LIKE '$entry'";
    $resA = mysql_query($sqlA) or die("$sqlA:".mysql_error());
    list($isThere) = mysql_fetch_row($resA);
    $isThere = intval($isThere);
    if ($isThere > 0) {
        $table_list[] = $table;
    } else{
        print "<p class=\"topic\">$entry does not exist</p>\n";
    }
}

你有它。

答案 1 :(得分:0)

为了热爱互联网,请不要自己构建SQL查询。使用PDO