mysql 表关系传递,mysql数据表之间数据相互传递的问题

mysql数据表之间数据相互传递的问题

近日,某操作需要从一个表(表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好些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值