0

{ 当我执行此查询时,它返回空结果,但结果保存在数据库中, enter code here名字是 D\'Ami

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}
4

1 回答 1

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如果变量的值(s)来自外部,则查询很容易受到攻击。请看下面的文章,了解如何预防。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

于 2013-02-28T09:00:31.270 回答