在php中使用json_encode的Mysql Update查询问题

时间:2016-03-22 15:09:37

标签: php mysql json

当我使用php mysql更新数据时,遇到了一些问题,我的代码php代码就在这里

$query = "UPDATE `wp_experience` SET 
                     `exp_from` ='". $exp_from."' ,
                     `exp_to` = '". $exp_to."' ,
                     `exp_title` = '". json_encode($exp_title)."',
                     `exp_desc` = '". json_encode($exp_desc)."' ,                               
                     `exp_cat` = '". $exp_cat."'                                
                     WHERE `id` =".$oldid;

它会生成像

这样的数据
  

UPDATE wp_experience SET exp_from ='2016-01-22 00:00:00',exp_to ='2002-11-14 00:00:00',{{ 1}} ='{“en”:“PSA标致雪铁龙汽车公司,米卢斯(F-68)”,“fr”:“技术指导 - 法国”,“de”:“负责任的维护单位”}, exp_title ='{“en”:“   试验< / P> “中, ”FR“:”   试验< / P> “中, ”去“:”   H< / p>“}',exp_desc ='18'WHERE exp_cat = 28

我遇到了这个问题,

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'unitédemaintenance“}'附近使用正确的语法,id ='{”en“:”   试验< / P> “中, ”FR“:”   在第1行测试< / p'

如何解决这个问题??

1 个答案:

答案 0 :(得分:1)

您的某些嵌入字符串会破坏您的查询,因此请使用mysqli_real_escape_string()或准备好的SQL语句:

$query = "
    UPDATE 
        wp_experience 
    SET 
        exp_from    = '" . $exp_from . "' ,  
        exp_to      = '" . $exp_to . "' , 
        exp_title   = '" . mysqli_real_escape_string($con, json_encode($exp_title)) . "',  
        exp_desc    = '" . mysqli_real_escape_string($con, json_encode($exp_desc)) . "' ,
        exp_cat     = '" . mysqli_real_escape_string($con, $exp_cat) . "'
    WHERE 
        id = " . $oldid;