1. 程式人生 > >php將json格式的資料直接存入mysql資料庫

php將json格式的資料直接存入mysql資料庫

直接使用php函式 json_encode ,資料存入mysql時會報錯:

Php程式碼  收藏程式碼
  1. $imgs_str = json_encode($imgs_array);  
  2. $imgs_str = addslashes($imgs_str);  
  3. $update_query = "updatearticleset imageList = $imgs_str where id = $targetid";  

解決方法

json編碼後的資料是這樣的:

Js程式碼  收藏程式碼
  1. {"key":"value"}  

那sql就是這樣的:

Sql程式碼  收藏程式碼
  1. insert into
     `table` (`field`) values ("{"key":"value"}")  

PHP addslashes() 函式

在每個雙引號(")前新增反斜槓:

定義和用法

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

預定義字元是:

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

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

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

所以就出錯了

完整程式碼:

Php程式碼  收藏程式碼
  1. $data = json_encode($array);  
  2. // 過濾  
  3. $data = addslashes($data);  
  4. // 插入資料庫  
  5. $db->insert($table_name,array('field' => $data));