如何在使用$ this-> db-> select()时禁用codeigniter中的反引号

时间:2018-02-12 09:52:30

标签: php mysql sql codeigniter datatables

我有一个功能:

  function datatables ()
  {
    $this->db->select('
      (CASE 
        WHEN L_Type_Name="Khusus" 
        THEN CONCAT("<i id=",L_Type_ID," class=\"formUpdate\" title=\"Ubah\"></i> <i id=",L_Type_ID," class=\"formDelete\" title=\"Hapus\"></i>")
      END) Option');
    $this->db->from('leave_type');
    return $this->datatables->generate();
  }

执行时,错误:

<h1>A Database Error Occurred</h1>
    <p>Error Number: 1064</p><p>You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'L_Type_ID`, " class=\"formDelete\" title=\"Hapus\"></i>")
      END) Option
FRO' at line 3</p><p>SELECT (CASE 
        WHEN L_Type_Name="Khusus" 
        THEN CONCAT("<i id=", `L_Type_ID`, " class=\"formUpdate\" title=\"Ubah\"></i> <i `id="`, `L_Type_ID`, " class=\"formDelete\" title=\"Hapus\"></i>")
      END) Option
FROM `leave_type`</p><p>Filename: C:/XAMPP/htdocs/sicuti/system/database/DB_driver.php</p><p>Line Number: 691</p>

我认为发生了错误,因为这里有一个引用/反引号:

<i `id="`, `L_Type_ID`, "

然后我在这里添加了FALSE参数来删除Quote / Backtick:

$this->db->select('',FALSE); 

在这里:

$this->db->from('',false);

但是,发生另一个错误,表明没有使用表:

<h1>A Database Error Occurred</h1>
    <p>Error Number: 1096</p><p>No tables used</p><p>SELECT *</p><p>Filename: C:/XAMPP/htdocs/sicuti/system/database/DB_driver.php</p><p>Line Number: 691</p>

我删除了一个FALSE参数 $ this-&gt; db-&gt; select()和$ this-&gt; db-&gt; from(),同样的错误1096。

我的代码出了什么问题? 以前我谢谢你......

https://pastebin.com/k6Mbfrcx

2 个答案:

答案 0 :(得分:2)

感谢您的回答,我发现了我的错误,我应该使用数据表查询构建器:($ this-&gt; datatables)而不是CI:($ this-&gt; db)。

$this->datatables->select('
     (CASE
       WHEN L_Type_Name="Khusus"
       THEN CONCAT("<i id=",L_Type_ID," class=\"formUpdate\" title=\"Ubah\"></i> <i id=",L_Type_ID," class=\"formDelete\" title=\"Hapus\"></i>")
     END) Option', false);
$this->datatables->from('leave_type');
return $this->datatables->generate();

CODE IN PASTEBIN

答案 1 :(得分:1)

我认为您在fromselect中都使用了false,您只需要在false中使用select()

尝试使用:

$this->datatables->select('
        (CASE 
            WHEN leave_type.L_Type_Name="Khusus" 
            THEN CONCAT("<i id=",leave_type.L_Type_ID," class=\"formUpdate\" title=\"Ubah\"></i> <i id=",leave_type.L_Type_ID," class=\"formDelete\" title=\"Hapus\"></i>")
        END) Option', false);
$this->datatables->from('leave_type');
return $this->datatables->generate();