0

{ When i execute this query it return empty result but result is save in data base with enter code herefirst name is 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値が外部から取得された場合、クエリは脆弱です。予防方法については、以下の記事をご覧ください。を使用すると、値を一重引用符で囲む必要がなくなります。PreparedStatements

于 2013-02-28T09:00:31.270 に答える