使用CodeIgniter更新MySQL表时出错

时间:2016-04-07 19:12:50

标签: php codeigniter

我有一个CodeIgniter应用程序,它使用codeigniter中的“update()”辅助方法更新表中的两列。

这是控制器:

      $data_v   = array(                
            "status" => $resp->Code
        );
        if($resp->Code == "0") {
            $data_v['name'] = $responseObject->AccountName;
                }
         $this->employees_model->update_employee($id, $data_v);

模型是:

     public function update_employee($id, $data) {

    $id = (int)$id;
    $this->db->where('empID', $id);
    $this->db->update('emp', $data);
}

问题是我收到以下错误:

 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 'NEO WHERE `empID` = 20160'   at line 1


   UPDATE `emp` SET `status` = 0, 
  `name` = ALIBABA, THIEF NEO WHERE `empID` = 20160

我对SQL的了解指出了(我相信)字符值

的事实
     ALIBABA, THIEF NEO 

需要用单引号括起来,看起来像这样

    'ALIBABA, THIEF NEO'

我该如何解决这个问题?如果问题不是用引号括起字符值......我该怎么办? 感谢

2 个答案:

答案 0 :(得分:0)

是的,你是对的,你需要在字符串之前和之后添加'

改变
$data_v['name'] = $responseObject->AccountName;

$data_v['name'] = "'".$responseObject->AccountName."'";

答案 1 :(得分:0)

您可以在db类中使用escape()方法来执行此操作。 Escape方法将找出数据类型并在字符串中添加引号。

例如:$ data_v ['name'] = $ this-> db-> escape($ responseObject-> AccountName);

注意:您也可以使用$ this-> db-> escape_str();