MySql数据库-查询、插⼊数据时转义函数的使⽤
  最近在看⼀部php的基础视频教程,在做案例的时,当通过⽤户名查询⽤户信息的时候,先使⽤了转义函数对客户提交的内容进⾏过滤之后再交给sql语句进⾏后续的操作。虽然能看到转义函数本⾝的作⽤,但是仍然有⼀些疑惑。
  疑惑⼀:当转义数据后,数据中会增加⼀些反斜杠,为了能查出对应的数据,那么原来存在数据库中的数据是不是也已经被保存成含有反斜杠的了?
  疑惑⼆:转义数据后再向数据库中插⼊数据,保存在数据库中的数据是否会含有过滤后的反斜杠?
  带着这些疑问对⽤户提交的表单进⾏测试。
  echo get_magic_quotes_gpc();  // 获取当前 magic_quotes_gpc的配置选项设置,如果开启了就会返回1,否则返回0
  $title = $_POST['title'];
  $sql = insert into news(`title`) values('". $title ."');
  如果不适⽤mysql_real_escape_string()转义函数,当接收的数据中包含单引号时就会引起sql错误。
php mysql教程视频  $title = mysql_real_escape_string($_POST['title']); 
  转义过后再进⾏插⼊数据就不会出现上⾯的问题,⽽且插⼊到数据库中的数据和输⼊时的⼀样,不会带有转义时增加的反斜杠。
  当查询数据时,也是按照输⼊时的内容与数据库进⾏⽐较,也能查询出相应的结果。
  由此推论,mysql_real_escape_string()转义函数只在sql语句执⾏的过程中起到保护作⽤,并不会对结果产⽣影响。
  将过滤函数贴出来。
1function check_input($value)
2 {
3// 去除斜杠
4if (get_magic_quotes_gpc())
5    {
6$value = stripslashes($value);
7    }
8// 如果不是数字则加引号
9if (!is_numeric($value))
10    {
11$value = mysql_real_escape_string($value);
12    }
13return$value;
14 }
  以上是⾃⼰的理解,与⼤家分享,如果有误还请⼤家批评指正。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。