【发布时间】:2013-09-17 16:03:24
【问题描述】:
我已经为此工作了 4 个多小时。我使用我正在做的活动记录选择查询: $this->db->like ('items.name',$search); 一切正常,但只要 $search 字符串中有单引号 ('),就会出现此错误:
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行附近使用 's%' OR
default_items.shortLIKE 'faith\'s%' LIMIT 5' 的正确语法
我刚刚检查过它在 LIKE 查询的活动记录中添加了双反斜杠 \\ 而不是单斜杠。我尝试在 MySQL bt 中删除一个斜线,它正在工作。
我的代码:
$q = "faith's";
$query = $this->db->select('items_categories.slug as category_slug, items_categories.name as cat_name, items.name, items.price_value, items.cover_photo, items.slug');
$query->select('default_items.short as short',false);
$query->select('date(default_items.date_created) as date_created',false);
$query->join('items_categories','items_categories.id=items.root_id','inner');
$query->join('users','items.company_id=users.id','inner');
$query->like('items.name',$q);
$query->or_like('items.short',$q);
$query->limit(5);
$result = $query->get($this->_table);
$both_prod_results = $result->result();
我正在使用 pyrocms 2.x。
【问题讨论】:
-
这可能是魔术引号问题(即引号被转义两次,所以根本没有)。它们应该在 CodeIgniter/PyroCMS 中关闭,但你永远不知道...php.net/manual/en/security.magicquotes.whynot.php。如果没有,请显示更多代码。
-
这里有同样的问题(未解决):stackoverflow.com/questions/18417441/…
-
是的,所有魔术引号都已关闭。每当我使用 Like 函数时,我什至尝试用简单的查询创建一个简单的函数,它添加双反斜杠而不是单反斜杠。 PyroCMS 默认搜索使用 Match Against,这对我的系统来说似乎不可行。
-
我不知道为什么在您尝试时它不起作用。不过看看this