转自:http://www.cnblogs.com/lvcha/archive/2013/11/26/3443358.html

我们在向mysql写入数据时,比如:

mysql_query (”update table set `title` = ’kuhanzhu’s blog’”);

http://www.cnblogs.com/xiaochaohuashengmi/archive/2010/05/09/1731415.html

  那就会出错。同asp时一样,数据库都会对单引号过敏。而addslashes在这个时候就最长面子了,跟asp的replace(”‘”,”””,”kuhanzhu’s blog”)功能一样。

PHP为了安全性,所以引入了个magic_quotes_gpc = On的功能,可以不需要做任何处理就能直接把单引号插入数据库中,那么对于Off时,则需要考虑单引号的问题了,而不是一味地信任运行环境。

当magic_quotes_gpc = On时,使用了addslashes()处理后的数据在数据库中将以\’形式保存,如果此时直接输出的话,就会发现比自己期待的内容多了个\,因此stripslashes()出场了,它能把\去掉(区别于str_replace(”\”, “”,$Str))。

当magic_quotes_gpc = Off时,使用了addslashes()处理后的数据在数据库中将以’形式保存,没有上面说的有\的问题,addslashes()起到插入数据不出错的作用,如果此时直接输出的话,数据正常。不需要再用stripslashes()。

addslashes()和stripslashes()正好是相反的,直接记忆:addslashes()加个\,stripslashes()去个\

那么什么时候用呢?

简单说:

当magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()和stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()

当magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes(),显示数据时则不需要使用stripslashes()。

既然有了分析,做程序时要怎么办呢?根据以上两种情况,可得:

不管magic_quotes_gpc是On还是Off,咱添加数据时都用addslashes(),当On时,必须使用stripslashes(),Off时则不能用stripslashes()。

如何判断On还是Off呢?用get_magic_quotes_gpc()。

最后举例:

代码

// 提交数据,或者变量准备:

$Content = addslashes (”这里面是数据,不管有没单引号或者还是变量”);

// 插入数据到数据库,代码省略

//开始显示数据

$Content = ”从数据库读取的数据”;

if ( get_magic_quotes_gpc ()){
   $Content = stripslashes ( $Content ); 
}

echo   $Content ;

php插入数据含有特殊符号的处理方法相关推荐

  1. oracle插入数据时有特殊符号@‘

    oracle插入数据时有特殊符号@&' 现在用户名插入一个有特殊符号的value 如果SQL中有&,那么后面的字符串将被作为一个变量来处理,无法正常插入数据库. 如果的确需要把& ...

  2. php批量新增数据类型,Yii框架批量插入数据扩展类的简单实现方法

    本文实例讲述了Yii框架批量插入数据扩展类的简单实现方法.分享给大家供大家参考,具体如下: MySQL INSERT语句允许插入多行数据,如下所示: INSERT INTO tbl_name (a,b ...

  3. MySQL插入数据很慢优化思路

    MySQL插入数据很慢优化思路 解决方法与思路 解决方法与思路 插入数据量非常大的场景 加大mysql配置中的bulk_insert_buffer_size,这个参数默认为8M bulk_insert ...

  4. 已解决Python向数据库插入数据的字符串中含有单引号或双引号报错

    已解决Python向数据库插入数据的字符串中含有单引号或双引号报错:(102, b"Incorrect syntax near 'S'.DB-Lib error message 20018, ...

  5. pymysql插入数据却一直提示right syntax to use near \

    刚刚使用pymysql连接数据库,然后想使用excute这个接口来插入数据,但是报错如下: (1064, 'You have an error in your SQL syntax; check th ...

  6. 存储mysql数据存在特殊字符时处理_转义 存储数据时特殊符号的处理

    function url_base64_encode($str){ //将这个方法处理后的数据可以存储,不会有特殊符号 if($str=="") return "&quo ...

  7. jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...

    数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...

  8. mysql 插入_Mysql中创建表格及插入数据

    学习笔记 [数据库相关概念] Q:什么是数据库和关系数据库. A:数据库是存储数据合集的"仓库".关系数据库是保存多张表和多张表之间的关系的数据库.关键字段将多张表"联结 ...

  9. Mybatis + Mysql 插入数据时中文乱码问题

    今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱码,一般有两种情况: 数据库本身设置 连接数据库时,jdbc的编码设置 对于第 ...

最新文章

  1. 数据结构应用实例#栈#迷宫寻路
  2. centos 升级mysql_CentOS 7下升级MySQL5.7.23的一个坑
  3. 从C语言的角度重构数据结构系列(八)-数据结构堆知识超级丑数
  4. bash ps1变量_在 Linux 中打扮你的冬季 Bash 提示符
  5. 深度学习项目-人群密度估计
  6. 深度学习之基于卷积神经网络(VGG16)实现性别判别
  7. Python 调度算法 死锁 静动态链接 分页分段
  8. 第四课-Log的使用
  9. (转)为Spring集成的Hibernate配置二级缓存
  10. JSON和API接口初识
  11. 2022国内十大工业级三维视觉引导企业一览
  12. 谷歌浏览器提示因应用程序的并行配置不正确无法启动
  13. 计算机组成原理中各种校验码,计算机组成原理保姆级复习资料
  14. NFT 是如何在 2021 年造就 400 亿美元市场的?
  15. 数学之路(4)-数学基础-幂函数图像与函数平移
  16. 一篇文章带你了解Nodejs
  17. SMTP, POP3, IMAP,Exchange ActiveSync区别
  18. 解决问题:安装Visio版本冲突(MSI与即点即用)
  19. 第八章《Java高级语法》第3节:位运算符
  20. sketch measure 导出html,Sketch measure 导出规范卡住的问题

热门文章

  1. 如何实现会议异地实时连线直播
  2. 第二次信奥考试试题及题解(部分)
  3. Qt调试器出现:the selected debugger may be inappropriate for the inferior的解决方案
  4. 计算机报名照片不能小于20kb,公务员考试:上传20KB电子照片难倒不少考生
  5. 用户画像第一章(企业级360°全方位用户画像_环境搭建)
  6. iPhone OS 4发布:支持多任务
  7. Wing IDE安装与破解方法
  8. 计算机二级vb考试教材,计算机二级考试VB基础题教材.doc
  9. 【总结】程序员运营公众号一年总结
  10. 基于MySQL 数据库的审计设计方案