Php 在MySQL中选择某些特殊字符时的奇怪行为
我有一行,其中列Php 在MySQL中选择某些特殊字符时的奇怪行为,php,mysql,Php,Mysql,我有一行,其中列url具有以下值: http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"] 当我执行以下查询时: SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]' MySQL表示记录不存在。您需要转义两个\“因为\”是一个转义序列:执行的查询中将只保留“引号” \“[转义序列是
url
具有以下值:
http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]
当我执行以下查询时:
SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]'
MySQL表示记录不存在。您需要转义两个\“因为\”是一个转义序列:执行的查询中将只保留“引号” \“[转义序列是否转换为]双引号(“”)字符?” \\[转义序列是否转换为]反斜杠(\”)字符 所以
\可能被转义。使用\\来转义“\”时使用的\您的意思是转义“(即\”)时使用的\也应该转义吗?是的,我会尝试“htp://example.com/a~~1234567890-=!@$%^&*(\+[\\\\\\”test\\\”]”(显然在htp中没有空格)
SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\\"test\\"]'