如果数据库中“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";
}
}
答案 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。