91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql語句怎樣插入含單引號或反斜杠的值

發布時間:2021-02-08 09:29:12 來源:億速云 閱讀:167 作者:小新 欄目: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語句怎樣插入含單引號或反斜杠的值”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

夹江县| 同仁县| 富川| 乐昌市| 玛多县| 乳源| 子洲县| 金阳县| 拉萨市| 桂林市| 桦南县| 江川县| 黔西县| 望城县| 五大连池市| 屏东市| 彭泽县| 甘德县| 古交市| 洱源县| 额尔古纳市| 衡阳县| 宝鸡市| 双辽市| 将乐县| 永川市| 神木县| 景宁| 娱乐| 营口市| 饶河县| 皮山县| 祥云县| 思南县| 治县。| 剑阁县| 瑞安市| 锡林浩特市| 乾安县| 青龙| 甘洛县|