-1

编辑某些可接受的答案被删除:(问题的解决方案是使用这样的函数:

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 是一个字符串,例如 red 或 green 或 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

4

1 回答 1

2

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

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

于 2012-06-21T05:46:18.187 回答