我有一个包含文字的字段" test \' test" 当我想根据这个字段选择这一行的数据时我必须这样做:
select * from test where field like '%test \\\\\'test%';
为什么5" \"而不是3?如何使用像addslashes或mysql_real_escape_string这样的PHP函数从原始文本中获取此字符串?
(10.0.16-MariaDB; PHP 5.3.3,Centos 6.5)
答案 0 :(得分:0)
一个\用于逃避'另外两个用于逃避两个\(因此其中五个)。
所以你的PHP发送到数据库三\和' (\\\')
,你的数据库然后使用一个\来逃避第二个\而第三个用于转义'。在决赛中有\#39; (根据需要)
echo mysql_real_escape_string("test \'test")
将输出"test \\\'test"
因为函数看到:"test 'test"
(没有backslas,因为baskslash被php吃掉以解析字符串)。所以mysql_real_escape_strings输出不正确,因为你的字符串输入不正确。