1. 程式人生 > >php解決插入資料時mysql對json_encode值的反斜槓進行轉義

php解決插入資料時mysql對json_encode值的反斜槓進行轉義

通過json_encode後的資料寫入Mysql資料庫時,mysql對會json_encode值裡面有中文的unicode反斜槓進行轉義,這是在資料庫層的轉義。

解決辦法,在json_encode外包addslashes()函式。

eg.

$a=['小明','小芳'];

$b=addslashes(json_encode($a));

定義和用法

addslashes() 函式返回在預定義字元之前新增反斜槓的字串。

預定義字元是:

  • 單引號(')
  • 雙引號(")
  • 反斜槓(\)
  • NULL

提示:該函式可用於為儲存在資料庫中的字串以及資料庫查詢語句準備字串。

註釋:預設地,PHP 對所有的 GET、POST 和 COOKIE 資料自動執行 addslashes()。所以您不應對已轉義過的字串使用 addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函式 get_magic_quotes_gpc() 進行檢測。

語法

addslashes(string)
引數 描述
string 必需。規定要轉義的字串。

相關推薦

php解決插入資料mysqljson_encode進行轉義

通過json_encode後的資料寫入Mysql資料庫時,mysql對會json_encode值裡面有中文的unicode反斜槓進行轉義,這是在資料庫層的轉義。 解決辦法,在json_encode外包

Oracle 表在插入資料自動增長id

Oracle不像Mysql建立表的時候可以設定預設自動增長值,必須要經過兩步走:1.建立序列create sequence goods_seq -- 建立序列名字 MINVALUE 1

解決mysql插入資料出現Incorrect string value: '\xF0\x9F...' for column 'name' at row 1的異常

這個問題,原因是UTF-8編碼有可能是兩個、三個、四個位元組。Emoji表情或者某些特殊字元是4個位元組,而MySQL的utf8編碼最多3個位元組,所以資料插不進去。 我的解決方案是這樣的 1.在mysql的安裝目錄下找到my.ini,作如下修改:   [mysqld] character

MySQL 在控制檯插入資料,中文亂碼問題的解決

當向 MySQL 資料庫插入一條帶有中文的資料形如  insert into employee values(null,'張三','female','1995-10-08','2015-11-12','Sales',2000,'是個好員工!');  出現亂碼時,可以使用語句

知識點:mysql查詢資料欄位做加、減、乘、除,null的四則運算為null

該處不羅列出每種情況,以減法、加法、乘法為例,說明該情況: 展示emp表: 1、減法: select empno,ename,sal-200 from emp; 2、乘法: select empno,ename,sal*12 from emp;    

MySQL插入資料,如果記錄不存在則insert,如果存在則update

MySQL 當記錄不存在時insert,當記錄存在時更新 網上基本有三種解決方法。 第一種: 示例一:insert多條記錄 假設有一個主鍵為 client_id 的 clients 表,可以使用下面的語句: INSERT INTO clients (clien

mybatis+mysql插入資料出現中文亂碼

剛接觸mybatis,使用mybatis插入時出現了中文亂碼的情況,最後問題關鍵在建立表的時候沒有設定編碼方式 剛開始是這樣寫的: create table companydetail( i

mysql資料庫中插入資料顯示“Duplicate entry '1′ for key ‘PRIMARY' ”錯誤

錯誤情況如題,出現這個錯誤的原因十分簡單: 很明顯,這是主鍵的問題。 在一張資料表中是不能同時出現多個相同主鍵的資料的 這就是錯誤的原因,解決的方法: 1.可以將這張表設定成無主鍵(mysql支

Mybatis + Mysql 插入資料中文亂碼問題

近日跟朋友一起建立一個專案,用的是spring+mybatis+mysql。今天碰到一個mybatis向mysql中插入資料時,中文顯示為'???'的問題,拿出來說下。對於資料庫操作中出現的中文亂碼,一般有兩種情況:資料庫本身設定連線資料庫時,jdbc的編碼設定對於第一種情況

Navicat修改mysql資料庫表插入資料欄位新增預設當前時間

比如新增createDate建立時間欄位,型別選擇timestamp,預設值填寫CURRENT_TIMESTAMP ,底部勾選欄位複選框提示根據當前時間戳更新 新插入的資料在select查詢時就會把該欄位的值查詢成最新的日期格式資料 資料查詢截圖如下

ssh開發中插入資料遇到 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right

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 'use

巧妙解決mysql刪除或新增記錄自增主鍵ID進行重新排序的問題

一、問題描述 表一 id 姓名 1 張三 2 李四 表二(當刪除第一條記錄時,顯示為表二) id 姓名 2 李四 表三(如何使表顯示為表三,即實現對錶中的id欄位重新排序) id 姓名 1 李四 二、問題解決 原理:重新定義一個變數用來顯示錶中的序列號 echo "<

mybatis插入資料返回主鍵(mysql資料庫)

第一種方式使用useGeneratedKeys屬性 User類 public class User { private i

mybatis 在oracle資料庫中插入資料獲取自增ID sequence序列

在oracle中sequence就是序號,每次取的時候它會自動增加。sequence與表沒有關係。 Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE許可權。 建立語句如下: CREATE SEQUEN

mybatis插入資料返回自增的主鍵

mybatis有一個方便的功能就是在插入資料後返回插入的記錄主鍵,設定非常方便,一共有兩種方式,推薦使用第一種 第一種: <insert id="createBook" parameterType="book" useGeneratedKeys="true" keyProperty="

插入資料,儲存的date型別時間欄位的資料只有年月日,沒有分秒的問題

本人使用的hibernate實體類對映方式,在實體類中date型別的註解方式,預設生成的是@Temporal(TemporalType.DATE) 在儲存的時候,此欄位資料就只保留了年月日 將註解方式更改為@Temporal(TemporalType.TIMESTAMP),就能正確儲存(

oracle實現插入資料主鍵自增

在看ORACLE_PL/SQL例項精解的時候用到了student表,需要自己建立。 1  首先是建表語句 create table student ( student_id number(8) not null primary key, --主鍵列 fi

處理資料資料取對數的意義

平時在一些資料處理中,經常會把原始資料取對數後進一步處理。 之所以這樣做是基於對數函式在其定義域內是單調增函式,取對數後不會改變資料的相對關係,取對數作用主要有: 1. 縮小資料的絕對數值,方便計算。 例如,每個資料項的值都很大,許多這樣的值進行計算可能對超過常用資料型別的取值範圍,這時

建立和測試觸發器:向SC表插入資料,檢查插入資料的課程號是否存在於Course表中(建立之前刪除Cno的外來鍵約束,比較外來鍵約束和觸發器之間的不同)

alter table SC Drop constraint FK_SC--刪除外來鍵約束 CREATE TRIGGER trig_insert ON SC--在SC表中建立trig_insert觸發器 AFTER INSERT--insert為觸發事件,after則為觸發的時機

Mybatis 進行批量插入資料,處理已經存在的資料

假設存在一張 學生表:{姓名,年齡,年級} 假設已經存在了小明,小王等學生 這時候將姓名設定為唯一的主鍵或者索引 insert into 學生表 (姓名,年齡,年級) values <foreach collection="list" item="item" separator=