我有一行,其列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/