2013-02-28 28 views
0

{當我執行此查詢它返回空的結果,但結果是保存在與enter code here名數據基地是d \」阿米使用「在MySQL中喜歡接近

SELECT u.UserFirstName, u.UserLastName, u.UserHasLoginAccess, u.UserEmail 
FROM Users u 
WHERE u.UserLicenseID = '1603' 
AND TRIM(u.UserEmail) != '' 
AND (
u.UserEmail LIKE "%D\'Ami%" 
OR u.UserFirstName LIKE "%D\'Ami%" 
OR u.UserLastName LIKE "%D\'Ami%" 
OR CONCAT_WS( ' ', u.UserFirstName, u.UserLastName) LIKE "%D\'Ami%" 
) 
LIMIT 0 , 50} 
+0

http://www.sqlfiddle.com/#!2/36c375/2 – 2013-02-28 09:07:10

回答

0

當你想搜索使用查詢的單引號,您必須用另一個單引號將其轉義,而不是\。例如

u.UserEmail LIKE "%D''Ami%" 
OR u.UserFirstName LIKE "%D''Ami%" 
OR u.UserLastName LIKE "%D''Ami%" 
OR CONCAT_WS( ' ', u.UserFirstName, u.UserLastName) LIKE "%D''Ami%" 

作爲旁註,查詢是用SQL Injection脆弱,如果變量的值(小號)從外部來了。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

+0

感謝您對數據的基礎上名字的答覆是實際以此格式保存d \',但阿美當我在類似查詢中使用它不返回任何結果我的問題是如何寫返回結果與名稱D \'Ami – 2013-02-28 09:05:28

+0

其實它在這裏工作http://www.sqlfiddle.com/#!2/36c375/ 2 – 2013-02-28 09:10:13