2012-06-21 62 views
-1

編輯somehoe的acceptabe答案被刪除:( 的解決問題的方法是使用這樣的功能:與LIKE WHERE子句中使用通配符 - 也不返回結果

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子句中所有的通配符,查詢不返回任何結果。

我使用PHP和HTML - 不確定哪些版本,最有可能的最新可能。

我想使用%作爲*來選擇數據庫中任何類型的所有數據。

請幫我在網上的好心人,和榮耀將屬於你:d

+1

是您打算更換更具體的東西類似條款中的一項或更多?否則,你根本不需要WHERE子句。 –

+0

改爲嘗試'%%'。 –

+0

哈維你好,謝謝你,我會試試。 –

回答

2

如果沒有過濾器的選擇,不要使用WHERE子句在所有。這會在服務器上運行得更快,效率更高,這是你想要的。儘可能簡化所有查詢以避免不必要的負載。只有在查詢的WHERE子句中添加了選項。不要使用仍然返回所有記錄的LIKE子句。基於輸入動態地構建WHERE子句是一種可行的方法。多一點工作,但長遠來看會更好。

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

+0

謝謝您好,先生,我將使用這些信息來建立一個更好的,eficienter查詢。很好的信息要知道。 –

相關問題