当前位置:首页 > 教育培训 >

sql插入语句带单引号(sql语句中含有单引号)

来源:原点资讯(m.360kss.com)时间:2023-06-04 19:39:43作者:YD166手机阅读>>

今天给大家介绍了关于mysql语句插入含单引号或反斜杠值的相关内容,下面话不多说了,来一起看看详细的介绍吧

比如说有个表,它的结构是这个样子的

sql插入语句带单引号,sql语句中含有单引号(1)

比如说往里面插入记录,示例代码如下:

$servername = "xxxxservername"; $port = 3306; $username = "xxxusername"; $password = "xxxpwd"; $dbname = "xxxxxxdb"; // 创建连接 $conn = new mysqli($servername, $username, $password, $dbname, 8306); // 检测连接 if ($conn->connect_error) { die("connect failed: " . $conn->connect_error); } $item['title'] = 'happy new year!'; $sql = sprintf("INSERT INTO activity (title) VALUES ( '%s');", $item['title']); var_dump($sql); if ($conn->query($sql) === TRUE) { echo "insert success\n"; } else { echo "insert failed:" . $conn->error; } $conn->close();

这一段代码执行OK,没啥问题。但是如果代码里面的title变成happy valentine's day!就会报如下错误,提示你有语法错误:

insert failed:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's day!')' at line

因为INSERT INTO activity (title) VALUES ( 'happy valentine's day!');这个sql语句里面单引号不是成对的。

有时候会往数据库里面插入一些用户给的数据,很可能会出现上面这种情况,那么该如何避免呢?

要对sql里面的特殊字符进行转义。可以把$sql的那一行代码改成如下这样:

$sql = sprintf("INSERT INTO activity (title) VALUES ( '%s');", mysqli_real_escape_string($conn, $item['title']));

整个sql字符串实际上是这样的:

INSERT INTO activity (title) VALUES ( 'happy valentine\'s day!');"

有时候还会出现一种问题: json_encode之后,里面的中文被转成unicode码,插入到mysql里面发现\被吃掉了。

比如说中文这两个字的unicode码是\u4e2d\u6587,但是有时候插到数据库里反斜杠被吃掉了变成了u4e2du6587

看如下示例代码:

$item['title'] = json_encode([ 'balbalbla' => '中文' ]); $sql = sprintf("INSERT INTO activity (title) VALUES ( '%s');", $item['title']);

整个sql字符串实际上是这样的:

INSERT INTO activity (title) VALUES ( '{"balbalbla":"\u4e2d\u6587"}');

插入到数据库里面,title这个字段的值就变成了{"balbalbla":"u4e2du6587"} 。

那是因为这里的\被当成转义符了,实际上要对unicode码的\再次转义,这样插入数据库的才是对的

$item['title'] = json_encode([ 'balbalbla' => '中文' ]); $sql = sprintf("INSERT INTO activity (title) VALUES ( '%s');", mysqli_real_escape_string($conn, $item['title']));

整个sql字符串实际上是这样的:

INSERT INTO activity (title) VALUES ( '{\"balbalbla\":\"\\u4e2d\\u6587\"}');


以上就是这篇文章的全部内容了,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。后面小编会分享更多运维方面的干货,感兴趣的朋友走一波关注哩~

sql插入语句带单引号,sql语句中含有单引号(2)

栏目热文

sql语句引号处理(sql语句连接后怎么判断引号)

sql语句引号处理(sql语句连接后怎么判断引号)

1. 首先了解sql注入的原理:SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求...

2023-06-04 19:08:27查看全文 >>

sql语句参数含有引号(sql语句条件查询)

sql语句参数含有引号(sql语句条件查询)

一、修改查询出来的字段属性①、cast 和convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式cas...

2023-06-04 19:38:48查看全文 >>

sql语句中连接单引号怎么写

sql语句中连接单引号怎么写

书写风格1. 语句关键字应全部使用小写。2. 引用字符时应使用单引号。如:update testable set idc...

2023-06-04 19:03:53查看全文 >>

sql语句中的反引号(sql语句大全及用法)

sql语句中的反引号(sql语句大全及用法)

目前找到的资料来看可以把这些绕过WAF的技术分为9类包含从初级到高级技巧a) 大小写混合 b)替换关键字 c)使用编...

2023-06-04 19:15:03查看全文 >>

sql语句什么时候加双引号(sql语句加双引号怎么设置)

sql语句什么时候加双引号(sql语句加双引号怎么设置)

标准结构化查询语言(Structured Query Language)简称SQL,sql是我们日常工作中使用最多一项技...

2023-06-04 19:05:10查看全文 >>

985和211全部是一本吗(985和211有哪些大学)

985和211全部是一本吗(985和211有哪些大学)

一、211和985是什么意思1、211工程:又称“211工程”大学、“211”高校,“21代表21世纪,后面的1代表10...

2023-06-04 19:39:53查看全文 >>

一本和985211的区别(一本二本三本是什么意思)

一本和985211的区别(一本二本三本是什么意思)

国内高校有一本,二本,专科和高职院校之分,而其中一本又分为普通一本和211,985重点大学。考上一本已经很不错了,但每年...

2023-06-04 18:51:49查看全文 >>

985211算是一本吗(北影算是985211吗)

985211算是一本吗(北影算是985211吗)

98.5%的学生都进不去的大学叫985211个学生只有11个能进的大学叫211一般学生上不了的大学叫一本只要你不二就能上...

2023-06-04 19:05:16查看全文 >>

985211与普通一本区别(985211和普通一本有何区别)

985211与普通一本区别(985211和普通一本有何区别)

考大学,周边的人和父母都会希望能考上211/985的学校,为什么?因为211和985的学校到底是有什么魔力,引的人们争相...

2023-06-04 19:19:06查看全文 >>

一本就是211和985吗(一本二本三本是什么意思)

一本就是211和985吗(一本二本三本是什么意思)

我国有很多大学,其中一些大学的校名是很相似的,实力也差不多,比如西南大学、西北大学,这两所大学都是我国著名的211大学,...

2023-06-04 19:37:58查看全文 >>

文档排行