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

发现问题

当我们在向mysql写入数据时,如果数据中有特殊字符就会出现数据无法正常入库的情况,比如:

mysql_query(”update table set `name`='make's'”);

而这个时候一般就是使用addslashes()这个函数来转义数据中的特殊字符

处理方法

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()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • PHP大批量插入数据库的3种方法和速度对比

    第一种方法:使用insert into 插入,代码如下: $params = array('value'=>'50′); set_time_limit(0); echo date("H:i:s"); for($i=0;$i<2000000;$i++){ $connect_mysql->insert($params); }; echo date("H:i:s"); 最后显示为:23:25:05 01:32:05 也就是花了2个小时多! 第二种方法:使

  • PHP+MySQL之Insert Into数据插入用法分析

    本文实例讲述了PHP+MySQL之Insert Into数据插入用法.分享给大家供大家参考.具体如下: INSERT INTO 语句用于向数据库表中插入新纪录. 向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新纪录. 语法: INSERT INTO table_name VALUES (value1, value2,....) 您还可以规定希望在其中插入数据的列: INSERT INTO table_name (column1, column2,...) VALUES (va

  • php读取txt文件并将数据插入到数据库

    今天测试一个功能,需要往数据库中插入一些原始数据,PM给了一个txt文件,如何快速的将这个txt文件的内容拆分为所要的数组,然后再插入到数据库中? serial_number.txt的示例内容: serial_number.txt: DM00001A11 0116, SN00002A11 0116, AB00003A11 0116, PV00004A11 0116, OC00005A11 0116, IX00006A11 0116, 创建数据表: create table serial_numb

  • ThinkPHP写数组插入与获取最新插入数据ID实例

    本文实例讲述了thinkphp写数组插入与获取最新插入数据ID的实现方法.分享给大家供大家参考.具体方法分析如下: 该实例讲述了thinkphp怎么自己写数组插入,此处是以注册用户为例. 具体实现代码如下: 复制代码 代码如下: public function insert2(){  header("Content-Type:text/html; charset=utf-8");  $Dao = M("User"); // 构建写入的数据数组  $data[&quo

  • php+mysqli实现批量执行插入、更新及删除数据的方法

    本文实例讲述了php+mysqli实现批量执行插入.更新及删除数据的方法.分享给大家供大家参考.具体如下: mysqli批量执行插入/更新/删除数据,函数为 multi_query(). 下面的代码只是批量插入数据,事实上,插入数据.更新数据.删除数据等可以混合一起执行.查询时使用该函数,读取数据有点不太一样,具体参考如下代码: <?php //1.创建数据库连接对象 $mysqli = new MySQLi("localhost","root","

  • php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)

    /** * $splitChar 字段分隔符 * $file 数据文件文件名 * $table 数据库表名 * $conn 数据库连接 * $fields 数据对应的列名 * $insertType 插入操作类型,包括INSERT,REPLACE */ 复制代码 代码如下: <?php /** * $splitChar 字段分隔符 * $file 数据文件文件名 * $table 数据库表名 * $conn 数据库连接 * $fields 数据对应的列名 * $insertType 插入操作类型

  • php 在文件指定行插入数据的代码

    复制代码 代码如下: $arrInsert = insertContent("array.php", "abcdef", 3, 10); unlink("array.php"); foreach($arrInsert as $value) { file_put_contents("array.php", $value, FILE_APPEND); } function insertContent($source, $s, $i

  • PHP接收json 并将接收数据插入数据库的实现代码

    最近有一个需求,前端向后台提交json,后台解析并且将提交的值插入数据库中, 难点 1.php解析json(这个不算难点了,网上实例一抓一大把) 2.解析json后,php怎样拿到该拿的值 <?php require ('connect.php'); /* 本例用到的数据: post_array={"order_id":"0022015112305010013","buyer_id":"2","seller_i

  • php把数据表导出为Excel表的最简单、最快的方法(不用插件)

    先定义头部信息,表示输出一个excel.然后再以table的形式把数据库的信息循环的echo出来,就好了. 复制代码 代码如下: <?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=xls_region.xls"); $cfg_dbhost = 'localhost'; $cfg_dbname = 'testdb'; $cfg_d

  • php daodb插入、更新与删除数据

    复制代码 代码如下: <?php include("adodb/adodb.inc.php"); //包含adodb类库文件 $conn = NewADOConnection('mysql'); //连接数据库 $conn -> Connect('localhost', 'root', '1981427', 'test'); $conn -> Execute("insert into tablename1 values('9','zhuzhao', 'Sim

随机推荐