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

本文操作环境: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="https://www.lsjlt.com/skin/default/image/lazy.gif" class="lazy" data-original="”/Upfiles/201105/images/1306657040.jpg"” />
<img alt=\”\” width=\”400\” height=\”300\” src="https://www.lsjlt.com/skin/default/image/lazy.gif" class="lazy" data-original="\”/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="https://www.lsjlt.com/skin/default/image/lazy.gif" class="lazy" data-original="”/Upfiles/201105/images/1306657040.jpg"” />读出来又成了

<img alt=\”\” width=\”400\” height=\”300\” src="https://www.lsjlt.com/skin/default/image/lazy.gif" class="lazy" data-original="\”/Upfiles/201105/images/1306657040.jpg"\” />(这个应该知道怎么解决了吧?要不我再罗嗦下吧)

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

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

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

单引号被转义为 \'

双引号被转义为 \"

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

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

总结如下:

对于magic_quotes_gpc=on的情况,

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

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

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

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

对于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 //该函数是将特殊字符进行转义为普通字符。

--结束END--

本文标题: php如何实现插入数据库并进行转义操作

本文链接: https://www.lsjlt.com/news/279.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

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

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

    这篇文章主要为大家展示了“php如何实现数据库操作类的封装”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“php如何实现数据库操作类的封装”这篇文章吧。具体内容如下一、代码?php cla
    阅读数:334 php 数据库
  • 怎么运用PHP进行数据库操作类

    这篇文章主要为大家展示了“怎么运用PHP进行数据库操作类”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么运用PHP进行数据库操作类”这篇文章吧。PHP高级实战-数据库操作类主流php开发框架父
    阅读数:577 php 数据库
  • php字符怎么进行转义与反转义

    在php中,可以使用addslashes()函数来对字符进行转义,语法“addslashes($str)”;可以使用stripslashes()函数来对字符进行反转义,还原一个被转义的字符串,语法“stripslashes($str)”。
  • PHP中如何操作MongoDB 数据库

    这期内容当中小编将会给大家带来有关PHP中如何操作MongoDB 数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1,连接MongoDB数据库$conn = new Mongo();其他链接方式//
    阅读数:164 php mongodb
  • php操作mysql(数据库常规操作)

    php操作数据库八步走 4";//删除数据// 执行 SQL 语句$result = mysqli_query($link, $sql);// 解析 SQL 语句执行结果if ($result) {echo "执行成功!" . " 成功删除了数
  • php几千条数据怎么插入数据库

    php实现插入几千条数据的方法:1、打开相应的代码文件;2、使用“insert into table_name (field1,field2) values (1,2),(2,3),(3,5),(5,6)”语句插入即可。
    阅读数:829 php
  • php如何实现Redis的String操作

    这篇文章给大家分享的是有关php如何实现Redis的String操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。String操作//设置键值:成功返回true,否则返回false$redis->set(mys
    阅读数:372 php redis string
  • php如何实现Redis的List操作

    这篇文章将为大家详细讲解有关php如何实现Redis的List操作,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。List操作//从list头部插入一个值。$ret = $redis->lPush(cit
    阅读数:220 php redis list
  • php如何实现Redis的Hash操作

    小编给大家分享一下php如何实现Redis的Hash操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Hash操作//为hash表中的字段赋值。成功返回1,失败返
    阅读数:917 php redis hash
  • php如何实现Redis的Set操作

    这篇文章给大家分享的是有关php如何实现Redis的Set操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Set操作//将一个元素加入集合,已经存在集合中的元素则忽略。若集合不存在则先创建,若key不是集合类型
    阅读数:653 php redis set
  • php如何实现Redis的Zset操作

    这篇文章给大家分享的是有关php如何实现Redis的Zset操作的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Zset操作//将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,则更新
    阅读数:819 php redis zset
  • PHP操作SQLServer数据库实现表的改查与统计

    这篇文章主要介绍了如何利用PHP对MSSQLServer数据表的查询、统计与修改,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
  • 如何实现PHP连接数据库,通过面向过程方法实现最基本的增删改查操作

    如何实现PHP连接数据库,通过面向过程方法实现最基本的增删改查操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、PHP连接MySQL数据库?php$hos
    阅读数:390 php 数据库 增删改查
  • PHP中如何查询数据库

    小编给大家分享一下PHP中如何查询数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!查询方法应该如何实现:我们根据以前所讲的原理,我们需要用到以下方法://fi
    阅读数:361 php 数据库
  • PHP Ajax如何请求MySQL数据库

    PHP Ajax如何请求MySQL数据库,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据库:前台页面:choseForm.phpsc
    阅读数:380 php ajax mysql
  • php登录不用数据库怎么实现

    php登录不用数据库的实现方法:1、创建好一个index.php文件;2、创建form登录表单;3、通过“if($user=='user' && $pwd=='pwd'){...}”方法实现用户判断登录即可。
    阅读数:150 php 登录
  • php 使用预处理语句操作数据库

    今天这篇文章的内容其实也是非常基础的内容,不过在现代化的开发中,大家都使用框架,已经很少人会去自己封装或者经常写底层的数据库操作代码了。所以这回我们就来复习一下数据库中相关扩展中的预处理语句内容。
  • php如何转义字符串

    在php中使用addslashes()函数对字符串进行转义,具体方法如下:addslashes()函数作用:php中addslashes()函数的作用是用于在预定义字符前添加反斜杠的字符串。addslashes()函数语法:addslash
    阅读数:722 PHP 字符串
  • PHP实现获取MySQL数据库的记录数据

    如果后台数据处理使用PHP来进行,那么就要有相应的数据处理及返回。最常用的就是获取记录总数和表记录查询结果。本文将为大家介绍如何利用PHP实现获取MySQL数据库的记录数据,需要的可以参考一下