如何在 CodeIgniter 中使用 LIKE 查询?

发布于 2024-09-19 23:24:17 字数 279 浏览 6 评论 0原文

我想运行这样的查询:

SELECT * FROM table WHERE field LIKE '%search_term%'

在 CI 中,如果您使用 field=?,则可以将参数绑定到查询,但这不适用于 field LIKE "%?%"。从调试输出来看,使用的查询似乎是field LIKE "%'search'%"

有没有其他方法可以在 CodeIgniter 中进行搜索?

I want to run a query like this:

SELECT * FROM table WHERE field LIKE '%search_term%'

In CI you can bind parameters to queries, if you used field=? but this does not work for field LIKE "%?%". From debugging output it seems the query used is field LIKE "%'search'%".

Is there an alternative way to do searching in CodeIgniter?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

情话墙 2024-09-26 23:24:17

您可以使用此查询:

SELECT * FROM table WHERE field LIKE ?

并使用 %search% 而不是 search 进行绑定。

你应该知道这个查询在 MySQL 中会很慢。您可能想看看自由文本搜索(Lucene、Sphinx 或 MySQL 的内置自由文本搜索功能)。

You can use this query:

SELECT * FROM table WHERE field LIKE ?

And bind with %search% instead of search.

You should be aware that this query will be slow in MySQL. You might want to look at free-text search instead (Lucene, Sphinx, or MySQL's built-in free-text search functions).

呆头 2024-09-26 23:24:17

这是 codeigniter 的活动记录类

$this->db->select('*');
$this->db->like('columnname','both');
$query=$this->db->get("tablesname");
$result=$query->result_array();
if(count($result))
{
return $result;
}
else
{
return FALSE;
}

您应该尝试这个..我认为它对您有帮助..
两者都表示%columnname%,
before 表示 %columnname,
after 表示列名%

this is active record class for codeigniter

$this->db->select('*');
$this->db->like('columnname','both');
$query=$this->db->get("tablesname");
$result=$query->result_array();
if(count($result))
{
return $result;
}
else
{
return FALSE;
}

You should try this..I think its help you..
both means %columnname%,
before means %columnname,
after means columnname%

$search_term=$this->input->post('textboxName');
$search_term="%".$search_term."%";
$sql="SELECT * FROM table WHERE field LIKE ? ";
$query=$this->db->query($sql,array($search_term));
$res=$query->result();
$search_term=$this->input->post('textboxName');
$search_term="%".$search_term."%";
$sql="SELECT * FROM table WHERE field LIKE ? ";
$query=$this->db->query($sql,array($search_term));
$res=$query->result();
金兰素衣 2024-09-26 23:24:17

我能理解的 CI 是添加引号,在绑定时传递 FALSE 作为第三个参数以防止 CI 添加引号。

what i can understand CI is adding quotes, pass FALSE as third parameter while binding to prevent CI adding quotes.

自在安然 2024-09-26 23:24:17

CodeIgniter 提供了一种查询构建器方法,可以更轻松地在 WHERE 子句中创建安全且转义的 LIKE 条件。

在您的模型方法中:

return $this->db->like('field', $search_term)->get('table')->result();

此查询生成器单行将返回一个由零个或多个对象组成的数组,其中包含符合条件的行中的所有列。

渲染的 SQL:

SELECT * FROM `table` WHERE `field` LIKE '%your term%' ESCAPE '!'

CodeIgniter provides a query builder method to more comfortably create safe and escaped LIKE conditions in a WHERE clause.

In your model method:

return $this->db->like('field', $search_term)->get('table')->result();

This query builder one-liner will return an array of zero or more objects containing all columns from qualifying rows.

Rendered SQL:

SELECT * FROM `table` WHERE `field` LIKE '%your term%' ESCAPE '!'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文