最近在看一部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错误。

  

  $title = mysql_real_escape_string($_POST['title']);  

  转义过后再进行插入数据就不会出现上面的问题,而且插入到数据库中的数据和输入时的一样,不会带有转义时增加的反斜杠。

  当查询数据时,也是按照输入时的内容与数据库进行比较,也能查询出相应的结果。

  由此推论,mysql_real_escape_string()转义函数只在sql语句执行的过程中起到保护作用,并不会对结果产生影响。

  将过滤函数贴出来。

 1 function check_input($value)
2 {
3 // 去除斜杠
4 if (get_magic_quotes_gpc())
5 {
6 $value = stripslashes($value);
7 }
8 // 如果不是数字则加引号
9 if (!is_numeric($value))
10 {
11 $value = mysql_real_escape_string($value);
12 }
13 return $value;
14 }

  

  以上是自己的理解,与大家分享,如果有误还请大家批评指正。

  

MySql数据库-查询、插入数据时转义函数的使用的更多相关文章

  1. 向mysql数据库中插入数据时显示“Duplicate entry '1′ for key ‘PRIMARY' ”错误

    错误情况如题,出现这个错误的原因十分简单: 很明显,这是主键的问题. 在一张数据表中是不能同时出现多个相同主键的数据的 这就是错误的原因,解决的方法: 1.可以将这张表设置成无主键(mysql支持,其 ...

  2. 数据库中插入数据时发生ora-00984错误

    操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误,如下图所示: 出现的原因是由于,在插入字符或字符串型字段时.如果插入的数据是纯数字,则不会有错误:如果出现字符,则会报OR ...

  3. mysql数据库中插入数据INSERT INTO SET的优势

    往mysql数据库中插入数据.以前常用 INSERT INTO 表名 (列名1,列名2…) VALUES(列值1,列值2); 如果在PHP程序中,就会写成如下示例(往商品库里增加商品) $sql = ...

  4. jmeter连接mysql数据库批量插入数据

    前提工作: 1.在jmeter官网下载jmeter包(官网地址:https://jmeter.apache.org/).此外还需下载mysql驱动包,如:mysql-connector-java-5. ...

  5. django rest framework 向数据库中插入数据时处理外键的方法

    一.models.py中 from django.db import models class UserModel(models.Model) user_name = models.CharField ...

  6. [MySQL]load data local infile向MySQL数据库中导入数据时,无法导入和字段不分离问题。

    利用load data将文件中的数据导入数据库表中的时候,遇到了两个问题. 首先是load data命令无法执行的问题: 命令行下输入load data local infile "path ...

  7. 使用mysql数据库,插入数据出现问号(?)的问题,解决方法

    首先,我用的mysql数据库是5.7.12版本. 出现的问题: 1.插入数据显示错误,插入不成功,出现:Incorrect string value: '\xCD\xF5\xD5\xBC\xBE\xA ...

  8. MySQL数据库5 - 插入数据,修改数据,删除数据

    一.插入数据 1. 所有列都插入值 INSERT [INTO] TABLE_NAME VALUES(V1,V2....Vn); 特点:列值同数,列值同序 eg: insert into users v ...

  9. SQL数据插入字符串时转义函数

    函数一: std::string CheckString(std::string& strSource) { std::string strOldValue = "'"; ...

随机推荐

  1. Jmeter读取python生成的参数

    一.环境准备 1.准备python文件,测试脚本执行结果:下图中的打印的信息即JMeter预期要获取的参数信息 2.准备bat文件 3.添加 OS Process Sampler读取批处理文件 二. ...

  2. 操作系统-gcc编译器驱动程序

    gcc编译器驱动程序,读取x.c文件,翻译成可执行目标文件x 1.预处理阶段 预处理器(cpp)将x.c(源程序,文本文件)中的#等直接插入程序文本中,成为另一个c程序x.i(文本文件) 2.编译阶段 ...

  3. vue根据变量值绑定src的路径

    路径必须用require包裹起来才会起作用

  4. 「10.10」神炎皇(欧拉函数)·降雷皇(线段树,DP)·幻魔皇

    A. 神炎皇 很好的一道题,可能第一次在考场上遇到欧拉函数 题意:对于一个整数对 $(a,b)$,若满足 $a\times b\leq n$且$a+b$是$a\times b$的因子, 则称为神奇的数 ...

  5. 【题解】Luogu P2889 [USACO07NOV]挤奶的时间Milking Time

    Luogu P2889 [USACO07NOV]挤奶的时间Milking Time 题目描述 传送门Bessie is such a hard-working cow. In fact, she is ...

  6. win10下简单截图

    win10 下面可以 win+shift+s 拖动截图,个人感觉是最简单的

  7. .Net EF Core千万级数据实践

    .Net 开发中操作数据库EF一直是我的首选,工作和学习也一直在使用.EF一定程度的提高了开发速度,开发人员专注业务,不用编写sql.方便的同时也产生了一直被人诟病的一个问题性能低下. EF Core ...

  8. QT 之 ODBC连接人大金仓数据库

    QT 之 使用 ODBC 驱动连接人大金仓数据库 获取数据库驱动和依赖动态库 此操作可在人大金仓官网下载与系统匹配的接口动态库,或者从架构数据库的源码中获取驱动和依赖动态库 分别为: 驱动动态库:kd ...

  9. Kubernetes使用节点亲缘性将POD调度到特定节点上

    节点污点可以用来让pod远离特定的节点,尽量在不修改已有pod信息的前提,通过在节点添加污点信息,来拒绝pod在某些节点上的部署. 而现在介绍一种叫做节点亲缘性,通过明确的在pod中添加的信息,来决定 ...

  10. 7.1、controller节点配置

    0.配置openstack版本yum源: yum install centos-release-openstack-rocky 1.安装 OpenStack 客户端: yum install pyth ...