我正在codeigniter3.1.8中开发一个基本的博客应用程序。
搜索帖子功能给我带来了意想不到的麻烦:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '* LIKE '%expression%' ESCAPE '!'' at line 3
SELECT * FROM `posts` WHERE * LIKE '%expression%' ESCAPE '!'
这个 search()
posts模型中的方法如下所示:
public function search($expression) {
$this->db->like('*', $expression);
$query = $this->db->get('posts');
return $query->result();
}
相关表字段包括:
我的错在哪里?
2条答案
按热度按时间8fsztsew1#
在新的codeigniter版本(3.1.9)中,有一个不需要的打字错误的修复程序。。。内部
system/database/DB_query_builder.php
在第973行,我相信:这是:
case 'before': $v = "%'{$v}'"; // <- Check here break;
已更改为:case 'before': $v = "'%{$v}'"; // <- The fix break;
试着做这个改变,看看这是否能解决你的问题。编辑
看到你的代码后,请不要使用
*
作为字段名,您必须指定用于搜索的字段。。。例如,如果要搜索标题、描述和内容,可以按以下步骤进行:然后你剩下的代码。试试看。
vsaztqbk2#
您需要使用列/表达式而不是
*
:我需要查看posts表中所有列的lct
然后您可以使用类似(注意性能差,因为
CONCAT
以及LIKE '%exp'
让它变得毫无争议。避免潜在的问题
CONCAT
应添加分隔符: