php - 使用事件记录形成查询

标签 php mysql arrays codeigniter foreach

我正在尝试使用 codeigniter 的事件记录形成查询,搜索基于用户可以输入的逗号分隔列表。

我知道如何将搜索条件作为单独的值输出:

$criteria = explode($this->input->post('search_criteria');

我不知道的是如何在我的模型中创建一个查询,以根据条件的数量创建足够的 where 比较。

例如,如果用户要搜索 PHP、HTML、Project Management

我需要一个看起来像这样的查询,

SELECT * FROM candidates WHERE candidate_job_tags LIKE %PHP% OR WHERE candidate_job_tags LIKE %HTML% OR WHERE candidate_job_tags LIKE %Project Management%

复制代码

这可以做到吗?

最佳答案

您可以使用 Active Record class ' or_like() 方法构建查询的那部分:

// Assuming your array looks like something like this
$criteria = array('PHP', 'HTML', 'Project Management');

foreach($criteria as $key=>$val){
    $this->db->or_like('candidate_job_tags', $val);
}

$query = $this->db->get('candidates');

会生成如下所示的查询:

SELECT * FROM (`categories`) WHERE `category_title` LIKE '%PHP%' OR `category_title` LIKE '%HTML%' OR `category_title` LIKE '%Project Management%'

关于php - 使用事件记录形成查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522887/

相关文章:

c++ - 用数组引用调用

c++ - 来自 vector C++ 中字节表示的 Int

php - 如何从 iTunes 中读取 RSS 图像标签

python - 使用 django 安装 mysql 数据库

mysql - 错误查询 : DELETE and LEFT JOIN

java - 在logstash中使用jdbc输入插件时的时间变化

javascript - 多个 "inline"卷

php - 是否有在 LAMP 堆栈上运行的 DotNetOpenAuth 等效项?

php - 在多个表中处理/插入 ID。 (基础论坛)

php - 在网站上显示之前如何格式化数据库中的文本