【问题标题】:Using Wildcards in the Where clause with LIKE - returns no results在带有 LIKE 的 Where 子句中使用通配符 - 不返回任何结果
【发布时间】:2012-06-21 02:34:06
【问题描述】:

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

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

【问题讨论】:

  • 您是否打算用更具体的内容替换一个或多个类似的子句?否则你根本不需要 WHERE 子句。
  • 哈维你好,谢谢你,我会试试的。
  • 在通配符之前,这是否返回任何结果? SELECT trees.* , price.10mm , price.20mm FROM trees INNER JOIN price ON trees.ID=price.treeid
  • 我的意图是让用户从下拉框中选择 ANY,或者选择多种颜色中的一种,并且变量将是 fileld,带有用于选择 ANY 的 % 或单词 (颜色),如果他们选择其他方式。
  • 雷切尔,我会尽力让你知道

标签: php sql database web sql-like


【解决方案1】:

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

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

【讨论】:

  • 谢谢你的好先生,我将使用这些信息来构建一个更好、更高效的查询。非常好的信息。
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
  • 2017-06-19
  • 1970-01-01
相关资源
最近更新 更多