网站地图    收藏   

主页 > 后端 > php资料库 >

mysql数据表之间数据相互传递的问题_自学php网

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] 近日,某操作需要从一个表(表A)读取一些数据,然后直接写入另外一个表(表B)(相当于一个备份) 平时没啥问题,某天测试MM将一些乱七八糟的数据写入后就出问题了,这些数据从...

近日,某操作需要从一个表(表A)读取一些数据,然后直接写入另外一个表(表B)(相当于一个备份)
平时没啥问题,某天测试MM将一些乱七八糟的数据写入后就出问题了,这些数据从页面提交到表A时没有问题,
但是从表A读取后写入表B确实有问题,将错误的SQL输出,发现其中包含单引号等一些在SQL中特殊的字符,
此时,需要将这些数据过滤,简单处理:使用addslashes函数,

string addslashes ( string str )

返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(’)、双引号(”)、反斜线(\)与 NUL(NULL 字符)。

在官方手册中也有提到使用这个函数作为数据写入数据库的一个示例

结论:写入数据表之前需要将所有的数据过滤,以防SQL注入或其它特殊字符的写入错误!

另外,addslashes对于防止SQL注入有一些用处,但是对于引号,可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes此时无法防止SQL注入。此函数的用于单字节字符串的处理会比较有用。然而多字节字符还是用mysql_real_escape_string好些。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论