php - 在 CodeIgniter 中使用 WHERE CONCAT 和 Active Record

标签 php mysql codeigniter activerecord

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

SELECT * FROM x WHERE CONCAT(y, ' ', x) LIKE '%value%';

我已经查看了 AR 文档,但找不到任何允许我执行此操作的内容。我不太熟悉它是如何构造这些查询的,希望有人能给我指出正确的方向。非常感谢。

最佳答案

如果你想使用 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();

引用手册Active Record session 中的第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);

恕我直言,更简单的方法是运行“常规”查询并利用绑定(bind):

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

关于php - 在 CodeIgniter 中使用 WHERE CONCAT 和 Active Record,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781808/

相关文章:

php - 将数据从一个表插入到另一个表中

php - 使用 CodeIgniter form_validation 规则 is_unique 加载多个数据库

mysql - Codeigniter mysql 查询组

php - 识别数据缓存在哪一层 - PHP/MySQL

php - 以不同方式设置 PHP echo 输出的样式

php - 如何在 php 中动态组合图像和文本

php - 仅使用电子邮件注册 WordPress

mysql - 跟踪群发电子邮件 MySQL 设计

php - 如何使用 PHP 或 SQL 查询更改 MySQL 数据库中的 Auto_Incriment 值?

php - 通知用户有关 codeigniter 中的成功更新