• 技术文章 >后端开发 >PHP问题

    php如何实现插入数据库并进行转义操作

    藏色散人藏色散人2021-10-14 09:11:23原创78

    php实现插入数据库并进行转义操作的方法:1、设置magic_quotes_gpc项;2、开启magic_quotes_runtime项;3、打开magic_quotes_sybase项即可自动实现转义。

    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑

    php如何实现插入数据库并进行转义操作?

    php 写入数据库时特殊字符串处理(何时转义特殊字符)

    在处理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 字符将不会进行转义。

    我表单内容本来是:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” />
    <img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />

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

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

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

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

    第三步:提交到数据库,数据库储存还是正常的:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” />读出来又成了

    <img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />(这个应该知道怎么解决了吧?要不我再罗嗦下吧)

    第四步:将数据库读取的内容再用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语句的执行。

    全文:http://blog.csdn.net/qinglianluan/article/details/26272689

    php get_magic_quotes_gpc()函数用法介绍

    http://www.php100.com/html/php/hanshu/2013/0905/4689.html //可以这样理解:该函数是判断服务器《转义特殊字符》功能有没有开启。

    addslashes()

    全文:http://php.net/manual/zh/function.addslashes.php //该函数是将特殊字符进行转义为普通字符。

    推荐学习:《PHP视频教程

    以上就是php如何实现插入数据库并进行转义操作的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 转义
    上一篇:php怎么把csv文件内容转为数组 下一篇:php如何只抓取网页头
    大前端线上培训班

    相关文章推荐

    • php中怎么转义字符串• php json怎么去掉转义字符• php mysql转义函数有哪些• php.ini如何设置转义

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网