最近刚刚弄完一个企业网站,遇到了一个插入SQL语句的问题,因为这个企业站有英文站点,所以在插入的时候难免会有类似于单引号('),双引号( " ),反斜杠(/)这类的字符,所以在正常的 SQL 语句中是没有办法插入的,一直显示插入失败,像这类字符如果没有经过任何的处理,就直接插入 sql 里面,sql 在接受的时候会把这类的字符当成自己的一部分,所以会插入失败,解决的方法也很简单,在接受到这些字符的时候进行转义,这样告诉 sql 这个只是一个字符而已。
PHP中提供了两个关于特殊字符的处理函数,分别是 addslashes() 和 stripslashes():,其中 addslashes() 是进行转义的,是为特殊字符添加上反斜杠的,是在插入的时候使用的,而 stripslashes() 则是在读取的时候进行反转义的,把添加的反斜杠去掉,这样就会显示正常的内容了。
下面夏日博客演示两个简单的例子。
addslashes() 例子如下:
- <?php
- $str = "Who's John Adams?";
- echo $str . " This is not safe in a database query.<br />";
- echo addslashes($str) . " This is safe in a database query.";
- //xiariboke.com
- ?>
输出的结果为:
- Who's John Adams? This is not safe in a database query.
- Who\'s John Adams? This is safe in a database query.
可以看出第一个结果是原生字符,第二个结果是添加了反义 / 后的处理结果,这样就可以进行 SQL 的插入了。
stripslashes() 实例如下:
- <?php
- echo stripslashes("Who\'s John Adams?");
- ?>
输出的结果如下:
- Who's John Adams?
可以看得出来,stripslashes() 的实例很简单,就是把 addslashes() 添加的反斜杠给去掉,还原正常的字符串读取出来。