直接使用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. // 过滤  
  4. $data = addslashes($data);  
  5.    
  6. // 插入数据库  
  7. $db->insert($table_name,array('field' => $data));  
Logo

更多推荐