在具有LIKE的Where子句中使用通配符 - 不返回任何结果

时间:2012-06-21 02:34:06

标签: php sql database web sql-like

编辑somehoe接受的答案是DELETED :( 该问题的解决方案是使用这样的函数:

ifnull(trees.primarycolor, '') LIKE %,

开始问题: 您好,互联网,家庭,同事和随机陌生人的朋友。我有一种困境,肯定会激发那里的网站管理员。

我的查询如下:

$result = mysql_query("SELECT trees.* 
$bottom_query 
FROM trees 
INNER JOIN price 
ON trees.ID=price.treeid  
where trees.primarycolor like 
 '$primary_color'  
and trees.secondarycolor like 
 '$secondary_color'  
and trees.fallcolor like 
 '$fall_color'  
and trees.droughtresistant like 
 '$drought_resistant'  
and trees.height like 
 '$height'  
and trees.spread like 
 '$spread'  
and trees.trunkcolor like 
 '$trunk_color'  
and trees.flowering like 
 '$flowering' 
and trees.fruitproducing like 
 '$fruit_producing'  
");

$ var_name是字符串,如红色或绿色或true或false或通配符%。

打印出的实际查询如下:

SELECT trees.* , price.10mm , price.20mm FROM trees INNER JOIN price ON
trees.ID=price.treeid where trees.primarycolor like '%' and trees.secondarycolor like '%'
 and trees.fallcolor like '%' and trees.droughtresistant like '%' and trees.height like
 '%' and trees.spread like '%' and trees.trunkcolor like '%' and trees.flowering like '%'
 and trees.fruitproducing like '%' 

我的问题是,即使WHERE CLAUSE中包含所有通配符,查询也不会返回任何结果。

我正在使用PHP和HTML - 不确定哪些版本,最有可能是最新版本。

我想使用%作为*来选择数据库中任何类型的所有类型。

请帮助我互联网的好人,荣耀归你的:D

1 个答案:

答案 0 :(得分:2)

如果未选择过滤器,请不要使用WHERE子句。无论如何,这将在服务器上运行得更快,效率更高。保持所有查询尽可能简单,以避免在不需要的地方加载。如果做出选择,只在查询的WHERE子句中添加。不要使用仍然返回所有记录的LIKE子句。根据输入动态构建WHERE子句是可行的方法。更多的工作,但从长远来看会更好。

尼克 - http://www.meltedjoystick.com