mysql语句如何插入含单引号或反斜杠的值
发布时间:2022-02-17 05:15:20 所属栏目:MySql教程 来源:互联网
导读:这篇文章给大家分享的是有关mysql语句怎样插入含单引号或反斜杠的值的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 比如说有个表,它的结构是这个样子的 CREATE TABLE `activity` ( `id` int(11) NOT NULL AUTO_INCREMENT COM
这篇文章给大家分享的是有关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 successn"; } 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码是u4e2du6587,但是有时候插到数据库里反斜杠被吃掉了变成了u4e2du6587 看如下示例代码: $item['title'] = json_encode([ 'balbalbla' => '中文' ]); $sql = sprintf("INSERT INTO activity (title) VALUES ( '%s');", $item['title']); 整个sql字符串实际上是这样的: INSERT INTO activity (title) VALUES ( '{"balbalbla":"u4e2du6587"}'); 插入到数据库里面,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":"u4e2du6587"}'); 感谢各位的阅读!关于“mysql语句怎样插入含单引号或反斜杠的值”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧! (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |