我有一行,其列url具有以下值:

http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]

当我执行以下查询时:
SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]'

MySQL称该记录不存在。

最佳答案

您需要转义两个“中的”,因为“是一个转义序列:只有引号”将保留在执行的查询中。
\“[是转换为]双引号(”“字符的转义序列”
\\[转义序列变成]反斜杠(“\”)字符
http://dev.mysql.com/doc/refman/5.7/en/string-literals.html
所以

SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\\"test\\"]'

关于php - 在MySQL中选择某些特殊字符时的奇怪行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39741804/

10-11 22:36
查看更多