如何在 CodeIgniter 中使用 LIKE 查询?
我想运行这样的查询:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用此查询:
并使用
%search%
而不是search
进行绑定。你应该知道这个查询在 MySQL 中会很慢。您可能想看看自由文本搜索(Lucene、Sphinx 或 MySQL 的内置自由文本搜索功能)。
You can use this query:
And bind with
%search%
instead ofsearch
.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).
这是 codeigniter 的活动记录类
您应该尝试这个..我认为它对您有帮助..
两者都表示%columnname%,
before 表示 %columnname,
after 表示列名%
this is active record class for codeigniter
You should try this..I think its help you..
both means %columnname%,
before means %columnname,
after means columnname%
我能理解的 CI 是添加引号,在绑定时传递 FALSE 作为第三个参数以防止 CI 添加引号。
what i can understand CI is adding quotes, pass FALSE as third parameter while binding to prevent CI adding quotes.
CodeIgniter 提供了一种查询构建器方法,可以更轻松地在 WHERE 子句中创建安全且转义的 LIKE 条件。
在您的模型方法中:
此查询生成器单行将返回一个由零个或多个对象组成的数组,其中包含符合条件的行中的所有列。
渲染的 SQL:
CodeIgniter provides a query builder method to more comfortably create safe and escaped LIKE conditions in a WHERE clause.
In your model method:
This query builder one-liner will return an array of zero or more objects containing all columns from qualifying rows.
Rendered SQL: