在CodeIgniter中使用WHERE CONCAT和Active Record

Stu*_*urm 3 php mysql activerecord codeigniter

我试图插入的原始查询是:

SELECT * FROM x WHERE CONCAT(y, ' ', x) LIKE '%value%';
Run Code Online (Sandbox Code Playgroud)

我已经通过AR文档检查过,找不到任何可以让我这样做的东西.我不太熟悉它是如何构建这些查询的,并且希望有人可以指出我正确的方向.谢谢一堆.

Dam*_*rsy 9

如果要使用AR类,则需要将FALSE作为第三个参数传递,以避免查询自动转义.你现在可以自己逃避争论了:

$value = $this->db->escape_like_str($unescaped);

$this->db->from('x');
$this->db->where("CONCAT(y, ' ', x) LIKE '%".$value."%'", NULL, FALSE);
$result = $this->db->get();
Run Code Online (Sandbox Code Playgroud)

请参阅本手册的Active Record会话中的第4点).引用:

   Custom string:

   You can write your own clauses manually:
   $where = "name='Joe' AND status='boss' OR status='active'";
   $this->db->where($where);
   $this->db->where() accepts an optional third parameter. If you set it to FALSE, CodeIgniter will not try to protect your field or table names with backticks.
   $this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);
Run Code Online (Sandbox Code Playgroud)

一种更简单的方法,即imho,可以运行"常规"查询并利用绑定:

$result = $this->db->query("CONCAT(y, ' ', x) LIKE '%?%'", array($value));
Run Code Online (Sandbox Code Playgroud)