background image

 

却不能匹配 NULL 纪录。在某些时候,这种区别会造成一些意想不到的后果。就我的经验

 

而言,任何字段都应该声明为 NOT NULL 

 

。这样下面的 SELECT 查询语句就能够正常运

 

转了:
if (!$CITY) {$CITY = "%";} 
$selectresult = mysql_query ("SELECT * FROM dbname 
WHERE FIRST_NAME = '   

兄 ' 

AND LAST_NAME = ' 

 

第连 ' 

AND CITY LIKE '$CITY' 
"); 

 

在第一行中,如果用户没有指定一个 CITY 

 

值,那么就会用通配符 % 

 

来代入 CITY 变量,

 

这样搜索时就会把任何的 CITY 

 

值都考虑进去,甚至包括那些 CITY 

 

字段为空的纪录。

 

但是如果有一些纪录,它的 CITY 

 

字段值是 NULL ,这时问题就出现了。上面的查询是不

 

能够找到这些字段的。问题的一个解决办法可以是这样:
if (!$CITY) { $CITY = "%"; } 
$selectresult = mysql_query ("SELECT * FROM dbname 
WHERE FIRST_NAME = ' 兄' 
AND LAST_NAME = ' 第连' 
AND (CITY LIKE '$CITY' OR CITY IS NULL) 
"); 

 

注意在搜索 NULL 

“ 

时,必须用 IS ”

 

关键字,而 LIKE 

 

时不会正常工作的。

在最后要提到的是,如果你在加入或者修改一个新的字段之前,数据库中已经有了一些

 

记录了,这时新加入的字段在原来的纪录中的值,可能是 NULL ,也可能为空。这也算

 

是 MySQL 

 

的一个 Bug 

 

吧,所以在这种情况下,使用 SELECT 查询要特别的小心。