Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 今天,mysql\u real\u escape\u string()正在转义单引号和双引号_Php_Mysql - Fatal编程技术网

Php 今天,mysql\u real\u escape\u string()正在转义单引号和双引号

Php 今天,mysql\u real\u escape\u string()正在转义单引号和双引号,php,mysql,Php,Mysql,在CentOS上运行PHP5.3.2。就我所记得的,mysql\u real\u escape\u string()将只转义单引号以防止sql注入。双引号与此无关,因为在MySQL中,“不会开始或结束字符串文字 这导致反斜杠被插入到数据中!这显然是我不想要的。“确实在MySQL中启动了一个字符串。(见:) 例外情况: 如果ANSI_QUOTES SQL模式为 启用后,可以引用字符串文字 仅在单引号内 因为一个字符串在double中引用 引号被解释为 标识符 听起来像是开启了魔法语录 这篇文章详细

在CentOS上运行PHP5.3.2。就我所记得的,
mysql\u real\u escape\u string()
将只转义单引号以防止sql注入。双引号与此无关,因为在MySQL中,
不会开始或结束字符串文字

这导致反斜杠被插入到数据中!这显然是我不想要的。

确实在MySQL中启动了一个字符串。(见:)

例外情况:

如果ANSI_QUOTES SQL模式为 启用后,可以引用字符串文字 仅在单引号内 因为一个字符串在double中引用 引号被解释为 标识符


听起来像是开启了魔法语录

这篇文章详细介绍了您的问题,以及修复方法。

最近发生了什么变化?更新的PHP版本?还有别的吗?它不会无缘无故地开始这样做?php.ini中的设置是否已更改?
mysql\u real\u escape\u string
将字符串发送到mysql服务器,让其转义数据,然后返回它发送给您的内容。此外,MySQL在其默认模式下接受
作为字符串分隔符。好吧,我现在看到了……我似乎在库的转义函数中使用了addslashes()。但是如果我将其插入数据库,即
插入myTable值('BEGIN这是一个\“quote\”测试。\'Single\'END'))
反斜杠双引号是否会变成“
或反斜杠是否会随附在数据中?这意味着当我取出数据时,我必须去掉反斜杠。
\“
将转换为
;)好的,谢谢你,尼基,我有点害怕。然后,其他一些东西导致在我的数据中插入反斜杠。(不,这不是魔术语录)谢谢,但是魔术语录没有打开。问题实际上是我的代码两次转义数据(一次在本地函数中,一次在库函数中),这导致
变成
\”
,然后变成
\”
,插入数据库后变成
\”
。被接受的答案消除了我的困惑。嗯,公平地说,额外的报价正是问题所在。因此,虽然我无法预测您的代码是否在其他地方执行了此操作,但我确实准确地诊断了原因,而不是代理;-)啊,很对。希望有类似问题的人会寻求这个问题&它的答案之一,并找到解决方案:}
$str = 'BEGIN This is a "quote" test. \'Single\' END';
echo $str . "\n";
echo mysql_real_escape_string($str);

// Outputs:
BEGIN This is a "quote" test. 'Single' END
BEGIN This is a \"quote\" test. \'Single\' END