久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

175次閱讀
沒有評論

共計 2082 個字符,預計需要花費 6 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

這篇文章給大家分享的是有關 mysql 語句怎樣插入含單引號或反斜杠的值的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

前言

比如說有個表,它的結構是這個樣子的

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 問一下細節

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-04發表,共計2082字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 湖北省| 大厂| 财经| 靖宇县| 加查县| 凌源市| 正蓝旗| 崇礼县| 沙田区| 开远市| 格尔木市| 纳雍县| 漳浦县| 营口市| 宁陕县| 平原县| 陆丰市| 阿荣旗| 栖霞市| 基隆市| 寻乌县| 信宜市| 永修县| 湘潭县| 黄骅市| 四子王旗| 文登市| 平武县| 喜德县| 黔东| 民勤县| 策勒县| 长宁县| 夏津县| 兴隆县| 紫阳县| 南京市| 兰西县| 青川县| 利辛县| 白沙|