2011-06-09 56 views
0

所以我想做一個LIKE查詢並獲得一些結果,但我傳遞的文本有一些特殊字符,打破查詢。php mysql與特殊字符LIKE無法正常工作

如果我們假設文字是這樣的:

var test `select` `query`="$newval + "dsadsa$ ? "$test ? 

,我也有完全相同

一列VARCHAR

內相同的文本,然後執行查詢

SELECT * FROM table WHERE column LIKE '%$text%' 

表示沒有要返回的行。

編輯:當我發佈的數據庫裏面的數據我簡單地使用MySQL的真正轉義字符串,當我表現出在哪裏點擊搜索,我把ヶ輛上的文字 的文本,然後我SUBSTR從它0到50,做搜索查詢

+0

請問您可以發佈整段代碼嗎?這個問題很模糊。 – AlexanderMP 2011-06-09 22:59:03

+1

和select語句中,它應該是LIKE'%$ test'嗎? – ldg 2011-06-09 23:00:31

+0

如果是這樣的話,你是否嚴格要求'$ test'出現在字符串的末尾?如上所述,上述內容不會返回任何內容。但你應該看到一個結果,如果你使用LIKE'%$ test%'insead ... – 2011-06-09 23:04:30

回答

0

您可以使用mysql_real_escape_string(),它將轉義字符串中的任何特殊字符。

0

儘量避免寫變量直接轉換爲字符串,它可能會導致問題(+這真的不是很好):

mysql_query("SELECT * FROM table WHERE column LIKE '%" . $text . "%'"); 

當然確保$text變量確實是正確的(echo $text),字符轉義也可能導致問題,當然也可能有很多其他的東西導致問題(這取決於你的應用程序的體系結構 - 你在$text工作的地方)。