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错误。
$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数据库-查询、插入数据时转义函数的使用的更多相关文章
- 向mysql数据库中插入数据时显示“Duplicate entry '1′ for key ‘PRIMARY' ”错误
错误情况如题,出现这个错误的原因十分简单: 很明显,这是主键的问题. 在一张数据表中是不能同时出现多个相同主键的数据的 这就是错误的原因,解决的方法: 1.可以将这张表设置成无主键(mysql支持,其 ...
- 数据库中插入数据时发生ora-00984错误
操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误,如下图所示: 出现的原因是由于,在插入字符或字符串型字段时.如果插入的数据是纯数字,则不会有错误:如果出现字符,则会报OR ...
- mysql数据库中插入数据INSERT INTO SET的优势
往mysql数据库中插入数据.以前常用 INSERT INTO 表名 (列名1,列名2…) VALUES(列值1,列值2); 如果在PHP程序中,就会写成如下示例(往商品库里增加商品) $sql = ...
- jmeter连接mysql数据库批量插入数据
前提工作: 1.在jmeter官网下载jmeter包(官网地址:https://jmeter.apache.org/).此外还需下载mysql驱动包,如:mysql-connector-java-5. ...
- django rest framework 向数据库中插入数据时处理外键的方法
一.models.py中 from django.db import models class UserModel(models.Model) user_name = models.CharField ...
- [MySQL]load data local infile向MySQL数据库中导入数据时,无法导入和字段不分离问题。
利用load data将文件中的数据导入数据库表中的时候,遇到了两个问题. 首先是load data命令无法执行的问题: 命令行下输入load data local infile "path ...
- 使用mysql数据库,插入数据出现问号(?)的问题,解决方法
首先,我用的mysql数据库是5.7.12版本. 出现的问题: 1.插入数据显示错误,插入不成功,出现:Incorrect string value: '\xCD\xF5\xD5\xBC\xBE\xA ...
- MySQL数据库5 - 插入数据,修改数据,删除数据
一.插入数据 1. 所有列都插入值 INSERT [INTO] TABLE_NAME VALUES(V1,V2....Vn); 特点:列值同数,列值同序 eg: insert into users v ...
- SQL数据插入字符串时转义函数
函数一: std::string CheckString(std::string& strSource) { std::string strOldValue = "'"; ...
随机推荐
- 端午总结Vue3中computed和watch的使用
1使用计算属性 computed 实现按钮是否禁用 我们在有些业务场景的时候,需要将按钮禁用. 这个时候,我们需要使用(disabled)属性来实现. disabled的值是true表示禁用.fals ...
- 五、部署LNMP环境(linux + nginx + mysql + php)
装包(nginx.数据库.php.php调用)---------起服务-----权限 装包: yum -y install gcc openssl-devel pcre-devel zlib-de ...
- Centos7 安装 Zabbix Server 4.0
官方参考URL:https://www.zabbix.com/documentation/4.0/start 1. 安装 Apache 2.4(略) 注意系统时间/时区ntp server是否定时同步 ...
- 搭建简单模型训练MNIST数据集
# -*- coding = utf-8 -*- # @Time : 2021/3/16 # @Author : pistachio # @File : test1.py # @Software : ...
- SpringBoot和Spring到底有没有本质的不同?
现在的Spring相关开发都是基于SpringBoot的.最后在打包时可以把所有依赖的jar包都打进去,构成一个独立的可执行的jar包.如下图: 使用java -jar命令就可以运行这个独立的jar包 ...
- 【模板】关于vector的lower_bound和upper_bound以及vector基本用法 STL
关于lower_bound和upper_bound 共同点 函数组成: 一个数组元素的地址(或者数组名来表示这个数组的首地址,用来表示这个数组的开头比较的元素的地址,不一定要是首地址,只是用于比较的& ...
- SpringCloud Alibaba实战(8:使用OpenFeign服务调用)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一个章节,我们已经成功地将服务注册到了Nacos注册中心,实现了服务注册和服务发 ...
- C++ nullptr 和 NULL 的使用区别
1. 为什么会有nullptr的出现 目的:nullptr的出现主要是为了替代NULL. 那么,为什么要替代NULL呢? 在NULL的定义中存在会有2种方式,有的编译器会将NULL定义成0,有的编译器 ...
- Linux云计算-04_Linux用户及权限管理
Linux是一个多用户的操作系统,引入用户,可以更加方便管理Linux服务器,系统默认需要以一个用户的身份登录,而且在系统上启动进程也需要以一个用户身份器运行,用户可以限制某些进程对特定资源的权限控制 ...
- Linux系统下安装MongoDB
下载安装包 去MongoDB官网https://www.mongodb.com/try/download/community,下载社区版的安装包: 我的Linux系统是CentOS 7.5版本的,通常 ...