php mysql 单引号_php单引号和双引号导致Mysql操作失败的问题

news/2024/11/17 18:25:11/

php单引号和双引号导致Mysql操作失败的问题

时间:2015-05-09 00:49:56浏览:2591

在处理mysql和GET、POST的数据时,常常要对数据的引号进行转义操作。

PHP中有三个设置可以实现自动对’(单引号),”(双引号),(反斜线)和 NULL 字符转转。

PHP称之为魔术引号,这三项设置分别是

magic_quotes_gpc

影响到 HTTP 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。

这个开启时,通过GET,POST,COOKIE传递的数据会自动被转义。

如 test.php?id=abc'de"f

echo $_GET['id'];    #  会得到 abc'de"f

magic_quotes_gpc=On; 这个开启了,对写入数据库是没有影响的,比如 上面的$_GET['id']  写到数据库里面,依然是 abc'de"f ,

相反,如果magic_quotes_gpc=Off; 那么字符中要带有引号(不管单引号还是双引号) ,直接写入mysql都会直接变成空白

但是,如果你将它写入文档,而非mysql。那么它将是 abc'de"f

magic_quotes_runtime

如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。

magic_quotes_sybase

如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义。

我表单内容本来是:

对策一:修改php.ini文件(修改php.ini这个方法就不说了,大家可以google下)

对策二:把转义的给取消了

第一步:找到你提交的数据比如$_POST['content'],将其改成$content=stripslashes($_POST['content']);

第二步:以后在使用$POST['content']的地方都换成$content

第三步:提交到数据库,数据库储存还是正常的:读出来又成了

(这个应该知道怎么解决了吧?要不我再罗嗦下吧)

第四步:将数据库读取的内容再用stripslashes()过滤一下。

stripslashes()  这个函数 ,删除由addslashes()函数添加的反斜杠。用于清理从数据库或 HTML 表单中取回的数据

PHP页面中如果不希望出现以下情况:

单引号被转义为 '

双引号被转义为 "

那么可以进行如下设置以防止:

在php.ini中设置:magic_quotes_gpc = Off)

总结如下:

1. 对于magic_quotes_gpc=on的情况,

我们可以不对输入和输出数据库的字符串数据作

addslashes()和stripslashes()的操作,数据也会正常显示。

如果此时你对输入的数据作了addslashes()处理,

那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

2. 对于magic_quotes_gpc=off 的情况

必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出

因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

上一篇:php采集远程文章简单类

下一篇:php MySQL使用rand函数随机取记录

发表评论

昵称:  验证码:


http://www.ppmy.cn/news/773246.html

相关文章

Visio Word 2016 等 输入英文单引号

之前用 visio 2016 画图的时候,经常碰到一个问题,就是在文本框里输入英文的单引号之后,会被自动改成中文的单引号。好像 Word 2016 等 office 新版都有这个问题。解决方法是: 文件 -> 选项 -> 校对 -> 自动更正选项 ->…

java解析中文和单引号乱码_java中慎用单引号的问题

java中一定要慎用单引号 package com.zb.test.danyinhao; public class TestDanyinhao { /**字符串和字符 * param args */ public static void main(String[] args) { /** * java中“H”表示字符串。‘H’表示字符char,在运算中,由于char是两个字节&…

【杂项】原来有两种单引号(单引号和反引号)

今天看到这个语句 echo date 才知道原理我之前一直将反引号都当成了单引号(笑死) 知道后,我才知道之前在typora 中和 写博客的时候想要插入代码都要点击插入代码块(慢) 我知道打出三个单引号是快捷方式,但…

Mybatis模糊搜索参数有英文单引号解决方案

当模糊查询自动触发时&#xff0c;用户如果使用打字法输入汉字还没输入完&#xff0c;默认发送到后台的参数是以拼音加单引号的形式&#xff0c;这时mybatis模糊查询会报错。 环境&#xff1a;mybatis、oracle 原语句&#xff1a; <select id"findPhotoInfoList"…

统计字符串中特定字符成对的数量(英文单引号统计)

以统计英文单引号的对数为例 我的思路&#xff0c;先统计所有的单引号数量&#xff0c;之后通过取余判断是否存在没有配对的单引号。需要主要直接的数值运算结果是浮点数类型&#xff0c;所以需要转换为整数类型。 st input() pair 0 for s in st:if s "":pair …

java 正则表达式 单引号_关于Java:用Regex替换单引号和双引号

我有一个接收到格式错误的JSON字符串的应用,如下所示: {username : xirby} 我需要将双引号"替换为单引号 遵循以下规则(我认为): {后带有一个或多个空格的单引号 位于一个或多个空格和:之前 在:之后有一个空格 位于一个或多个空格和}之前 因此,此字符串{username : xi…

mysql单引号char 39,SQL中写入包含有英文单引号“ #39;#39; ”失败问题深入详解

当前碰到一个问题&#xff0c;在测试编辑信息内容&#xff0c;其中若编辑的内容包含单引号(‘)则写入Mysql数据库时写入失败&#xff0c;使用如下代码进行错误打印&#xff1a; if (!this->m_sql_query.prepare(update_string)) { printf(“exec fail—>%s\n”, this->…

mysql存储包含单引号英文字符串,SQL中写入包含有英文单引号“ '' ”失败问题深入详解...

当前碰到一个问题&#xff0c;在测试编辑信息内容&#xff0c;其中若编辑的内容包含单引号(‘)则写入Mysql数据库时写入失败&#xff0c;使用如下代码进行错误打印&#xff1a; if (!this->m_sql_query.prepare(update_string)) { printf(“exec fail—>%s\n”, this->…