千家信息网

mysql语句怎样插入含单引号或反斜杠的值

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章给大家分享的是有关mysql语句怎样插入含单引号或反斜杠的值的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言比如说有个表,它的结构是这个样子的CREATE TAB
千家信息网最后更新 2026年10月31日mysql语句怎样插入含单引号或反斜杠的值

这篇文章给大家分享的是有关mysql语句怎样插入含单引号或反斜杠的值的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

前言

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

CREATE TABLE `activity` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `title` varchar(255) NOT NULL COMMENT '活动标题', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='活动表';

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

$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\"}');

感谢各位的阅读!关于"mysql语句怎样插入含单引号或反斜杠的值"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

代码 数据 字符 实际 实际上 数据库 中文 引号 斜杠 语句 字符串 有时候 比如说 转义 内容 更多 示例 篇文章 错误 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南云网互联网络科技有限公司 中国互联网科技股 奇酷互联网科技 嘟嘟瓜互联网科技 互联网科技论文 美国互联网前沿科技 丰台科技园 互联网公司 互联网科技生活的内容 玖二柒互联网科技公司待遇 剑昆互联网络科技有限公司临桂 中化能源互联网科技招聘 花神(南京)互联网科技有限公司 伍佰万互联网科技怎么赚钱 杭州披云加互联网科技有限公司 浙南科技城互联网大厦招聘 工业互联网科技创业 吉林省码上互联网科技电话 互联网科技手抄报图片 现代科技的标志之一的互联网 株洲百竞科技的互联网营销顾问 花魁咖啡 云南咖啡 互联网科技图片 智能科技公司是互联网公司吗 互联网科技英文 美国互联网前沿科技 甘肃拓世互联网科技有限公司 新华互联网科技校企合作 速维有品互联网信息科技(苏州)有限公司 株洲百竞科技的互联网营销顾问
0