濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > mysql語(yǔ)句如何插入含單引號(hào)或反斜杠的值詳解

mysql語(yǔ)句如何插入含單引號(hào)或反斜杠的值詳解

熱門標(biāo)簽:淄博400電話申請(qǐng) 百度地圖標(biāo)注后不顯示 電話機(jī)器人市場(chǎng)趨勢(shì) 昆明電信400電話辦理 電銷機(jī)器人 行業(yè) 俄國(guó)地圖標(biāo)注app 南昌高頻外呼系統(tǒng)哪家公司做的好 溫州瑞安400電話怎么申請(qǐng) 電銷機(jī)器人各個(gè)細(xì)節(jié)介紹

前言

本文主要給大家介紹了關(guān)于mysql語(yǔ)句插入含單引號(hào)或反斜杠值的相關(guān)內(nèi)容,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

比如說(shuō)有個(gè)表,它的結(jié)構(gòu)是這個(gè)樣子的

CREATE TABLE `activity` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `title` varchar(255) NOT NULL COMMENT '活動(dòng)標(biāo)題',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='活動(dòng)表';

比如說(shuō)往里面插入記錄,示例代碼如下:

$servername = "xxxxservername";
$port = 3306;
$username = "xxxusername";
$password = "xxxpwd";
$dbname = "xxxxxxdb";

// 創(chuàng)建連接
$conn = new mysqli($servername, $username, $password, $dbname, 8306);

// 檢測(cè)連接
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(); 

這一段代碼執(zhí)行OK,沒啥問(wèn)題。但是如果代碼里面的title變成happy valentine's day!就會(huì)報(bào)如下錯(cuò)誤,提示你有語(yǔ)法錯(cuò)誤:

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

因?yàn)?code>INSERT INTO activity (title) VALUES ( 'happy valentine's day!');這個(gè)sql語(yǔ)句里面單引號(hào)不是成對(duì)的。

有時(shí)候會(huì)往數(shù)據(jù)庫(kù)里面插入一些用戶給的數(shù)據(jù),很可能會(huì)出現(xiàn)上面這種情況,那么該如何避免呢?

要對(duì)sql里面的特殊字符進(jìn)行轉(zhuǎn)義??梢园?sql的那一行代碼改成如下這樣:

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

整個(gè)sql字符串實(shí)際上是這樣的:

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

有時(shí)候還會(huì)出現(xiàn)一種問(wèn)題: json_encode之后,里面的中文被轉(zhuǎn)成unicode碼,插入到mysql里面發(fā)現(xiàn)\被吃掉了。

比如說(shuō)中文這兩個(gè)字的unicode碼是\u4e2d\u6587,但是有時(shí)候插到數(shù)據(jù)庫(kù)里反斜杠被吃掉了變成了u4e2du6587

看如下示例代碼:

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

整個(gè)sql字符串實(shí)際上是這樣的:

INSERT INTO activity (title) VALUES ( '{"balbalbla":"u4e2du6587"}');

插入到數(shù)據(jù)庫(kù)里面,title這個(gè)字段的值就變成了{"balbalbla":"u4e2du6587"}

那是因?yàn)檫@里的\被當(dāng)成轉(zhuǎn)義符了,實(shí)際上要對(duì)unicode碼的\再次轉(zhuǎn)義,這樣插入數(shù)據(jù)庫(kù)的才是對(duì)的

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

整個(gè)sql字符串實(shí)際上是這樣的:

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • PostgreSQL 中的單引號(hào)與雙引號(hào)用法說(shuō)明
  • 解決python 執(zhí)行sql語(yǔ)句時(shí)所傳參數(shù)含有單引號(hào)的問(wèn)題
  • 使用NotePad++錄制宏功能如何快速將sql搜索條件加上前后單引號(hào)
  • 關(guān)于Mysql查詢帶單引號(hào)及插入帶單引號(hào)字符串問(wèn)題
  • sql語(yǔ)句中單引號(hào),雙引號(hào)的處理方法
  • SQL中寫入包含有英文單引號(hào)“ '''' ”失敗問(wèn)題深入詳解

標(biāo)簽:吐魯番 安徽 葫蘆島 拉薩 洛陽(yáng) 嘉峪關(guān) 甘南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql語(yǔ)句如何插入含單引號(hào)或反斜杠的值詳解》,本文關(guān)鍵詞  mysql,語(yǔ)句,如何,插入,含單,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql語(yǔ)句如何插入含單引號(hào)或反斜杠的值詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于mysql語(yǔ)句如何插入含單引號(hào)或反斜杠的值詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    德格县| 利津县| 黔东| 望都县| 古田县| 东光县| 光泽县| 漠河县| 天等县| 余干县| 周至县| 开平市| 康乐县| 临城县| 金塔县| 巨鹿县| 南京市| 莱州市| 宜兰市| 苏尼特左旗| 宾川县| 嘉兴市| 阆中市| 丹巴县| 南昌市| 八宿县| 永胜县| 乐陵市| 北宁市| 宿州市| 安岳县| 延庆县| 永定县| 太和县| 娄烦县| 罗平县| 明光市| 齐河县| 卢龙县| 墨江| 柞水县|