欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年02月20日 08:22:55   作者:nemo  
這篇文章主要給大家介紹了關于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";

// 創(chuàng)建連接
$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(); 

這一段代碼執(zhí)行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里面發(fā)現\被吃掉了。

比如說中文這兩個字的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-binlog的查看實踐

    Mysql-binlog的查看實踐

    MySQL的二進制日志可以說是MySQL最重要的日志了,它記錄了所有的DDL和DML語句,本文主要介紹了Mysql-binlog的查看實踐,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 淺談MySQL中不等號索引問題

    淺談MySQL中不等號索引問題

    本文主要介紹了淺談MySQL中不等號索引問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • mysql快速添加百萬條記錄的語句

    mysql快速添加百萬條記錄的語句

    本文介紹一下關于MySQL使用INSERT SELECT批量插入數據的方法
    2013-11-11
  • 關于MySQL數據庫死鎖的案例和解決方案

    關于MySQL數據庫死鎖的案例和解決方案

    MySQL Update語句防止死鎖是指在修改MySQL數據庫的數據時,為避免多個進程同時修改同一數據行而造成死鎖的情況,引入了一些機制來防止死鎖的產生,本文介紹了一個 MySQL 數據庫死鎖的案例和解決方案,需要的朋友可以參考下
    2023-09-09
  • MySQL中case?when對NULL值判斷的踩坑記錄

    MySQL中case?when對NULL值判斷的踩坑記錄

    最近在學習Hive基礎知識時,遇到了遇到了Case?When?Else?End語法,這篇文章主要給大家介紹了關于MySQL中case?when對NULL值判斷的踩坑記錄,需要的朋友可以參考下
    2021-12-12
  • mysql binlog(二進制日志)查看方法

    mysql binlog(二進制日志)查看方法

    在本篇文章里小編給大家分享了關于mysql binlog(二進制日志)查看方法,有需要的朋友們學習下。
    2019-01-01
  • Mysql5.7.11在windows10上的安裝與配置(解壓版)

    Mysql5.7.11在windows10上的安裝與配置(解壓版)

    本文分為三大步給大家介紹Mysql5.7.11解壓版在windows10上的安裝與配置,另外還給大家?guī)砹薽ysql5.7.11服務無法啟動,錯誤代碼3534的解決方案,非常不錯,有需要的朋友參考下
    2016-08-08
  • Mysql實現水平分庫的示例代碼

    Mysql實現水平分庫的示例代碼

    本文主要介紹了Mysql實現水平分庫的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • mysql常用命令大全 mysql常用命令總結

    mysql常用命令大全 mysql常用命令總結

    本文介紹下,mysql中常用的一些命令,包括創(chuàng)建與修改數據庫、數據庫中的表,mysql的權限管理命令grant、revoke等的用法。有需要的朋友參考下
    2014-01-01
  • mysql 5.7.21解壓版本安裝 Navicat數據庫操作工具安裝

    mysql 5.7.21解壓版本安裝 Navicat數據庫操作工具安裝

    這篇文章主要為大家詳細介紹了mysql 5.7.21解壓版本安裝,Navicat數據庫操作工具安裝,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評論