国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - mysql語句如何插入含單引號或反斜杠的值詳解

mysql語句如何插入含單引號或反斜杠的值詳解

2019-06-05 09:57nemo服務器之家 Mysql

這篇文章主要給大家介紹了關于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\"}');

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 免费一二区 | 人人人人澡 | 欧美一区二区三区视频 | h成人在线 | 欧美在线观看一区 | 国产欧美一区二区精品性色 | 亚洲视频一区二区 | 亚洲美女久久 | 中文字幕在线视频第一页 | 巴西性猛交xxxx免费看久久久 | 在线国产一区 | av中文字幕在线播放 | 亚洲免费在线视频 | 久久视频免费看 | 成人在线观看网站 | 亚洲自拍偷拍网 | 少妇精品久久久久久久久久 | 国产成人精品亚洲日本在线观看 | 久久夜夜 | 久久久人成影片一区二区三区 | 一区中文字幕 | 久久视频一区 | 欧美日韩综合在线 | 成人在线免费电影 | 黄色三级网站在线观看 | 欧美日韩欧美日韩 | 精品伦精品一区二区三区视频 | 成人免费观看cn | 老牛嫩草一区二区三区眼镜 | 欧美日韩一级二级三级 | 特黄特色大片在线观看视频网站 | 在线国产一区二区 | 久久成人一区二区 | 国产精品一区二区不卡 | 欧美不卡在线 | 不卡中文一区 | 日韩精品在线一区 | 奇米在线视频 | 狠狠av| 啪啪导航 | 成人片在线播放 |