2013-12-20 169 views
0

我试图编写一个动态查询,它从几个下拉列表中获取信息。 并且在下拉列表中是一个名为ANY的选项,我给出的值为%,这样当它被选中时,它就不会影响查询选择。在查询中使用LIKE子句

这是我的查询:

$query_pag_data = " 
SELECT * 
FROM forecast 
WHERE QuoteCode IN 
    (SELECT QuoteCode 
    FROM `StockData` 
    WHERE AssetType LIKE '$sec' 
     AND region LIKE '$indust' 
     AND exchange LIKE '$exchange' 
     AND Country LIKE '$cntry') 
    AND RANKING LIKE '$sig_m_t' 
    AND RANKINGw '$sig_l_t' 
    AND NewSigD LIKE '$new_m' 
    AND NewSigW LIKE '$new_l' 
ORDER BY SCORE DESC LIMIT $start, 
          $per_page 
"; 

我想知道的是它的工作,如果我在一个变量传递%

+3

你尝试了吗? –

+0

当然,它会起作用,因为在您将查询传递给sql server之前,它可以随意编辑。但你可以发布PHP代码吗? – 2013-12-20 12:24:01

+0

也许你忘记了搜索字符串中的%-sign。 – Corni

回答

2

我在这些情况下,做的是:

$query_pag_data = " 
SELECT * 
FROM forecast 
WHERE QuoteCode IN 
(SELECT QuoteCode 
FROM `StockData` 
WHERE AssetType LIKE '%$sec%' 
AND region LIKE '%$indust%' 
AND exchange LIKE '%$exchange%' 
AND Country LIKE '%$cntry%' 
AND RANKING LIKE '%$sig_m_t%' 
AND RANKINGw '%$sig_l_t%' 
AND NewSigD LIKE '%$new_m%' 
AND NewSigW LIKE '%$new_l%' 
ORDER BY SCORE DESC LIMIT $start,$per_page"; 
+0

使用“”“您不必连接,php处理字符串并替换变量;) –

+0

我不确定应该删除哪些代码以使代码最优化,请让我知道应删除哪些字符。代码应该以我想要的方式工作 – injurer001

+0

是的代码工作,但它比'%'做'LIKE'%$ new_m。%''更快$ NEW_m。“%'”;) –