CodeIgniter查询语法错误

时间:2012-11-26 11:00:11

标签: debugging codeigniter syntax

我遇到CodeIgniter数据库查询的语法问题。无法弄清楚出了什么问题。

$query = $this->db->query("
   INSERT IGNORE INTO ".$table." (email, lang, ip_address) 
   VALUES (".$this->db->escape($_POST['email']).", ".$this->db->escape($lang).", ".$this->input->ip_address().")");

我也在寻找一种方法来输出替换占位符后查询的样子,因为我对CodeIgniter调试选项感到困惑。

4 个答案:

答案 0 :(得分:2)

看起来好像您没有转义您尝试输入数据库的字符串。您发布的查询将评估为:

$query = $this->db->query("
    INSERT IGNORE INTO table_name (email, lang, ip_address) 
    VALUES (email@email.com, en, 192.168.0.1)
");

由于VALUES中的字符串未正确转义,因此会抛出错误。而不是你正在运行的查询,你应该使用类似的东西:

$query = $this->db->query("
    INSERT IGNORE INTO ".$table." (email, lang, ip_address) 
    VALUES ('".$this->db->escape($_POST['email'])."', '".$this->db->escape($lang)."', '".$this->input->ip_address()."')
");

注意每个字符串周围的新'字符。

答案 1 :(得分:0)

使用

echo $this->db->last_query();

用于检索已运行的查询。

然后检查查询是否格式正确。

答案 2 :(得分:0)

知道要传递给数据库的查询。使用以下语句并将数据插入数据库。请按照以下程序操作。

  echo $this->db->last_query();

     $data = array(
           'email' =>  $this->db->escape($_POST['email']),
           'lang' = >  $this->db->escape($lang),
           'ip_address' => $this->input->ip_address(),
     );

 Call your model function $this->model->insert_function_name($data);

Your model function in your model file
public function insert_function_name($data)

  {
         $this->db->insert($table_name,$data);
    return $this->db->insert_id();
  } 

答案 3 :(得分:0)

试试这个:您的查询缺少单引号到字符串类型的值,如email,lang和ip

$query = $this->db->query("
   INSERT IGNORE INTO ".$table." (email, lang, ip_address) 
   VALUES ('".$this->db->escape($_POST['email'])."', '".$this->db->escape($lang)."', '".$this->input->ip_address()."')");
相关问题