CodeIgniter将撇号插入到数据库查询中

gok*_*ine 2 php database codeigniter substring apostrophe

我有一个令人困惑的奇怪问题.我想要做的就是在数据库表上运行查询但由于某种原因,CodeIgniter将撇号放入查询中,随后打破页面.

我的代码看起来像这样:

$this->db->select("SUBSTRING(body,5)"); 
$this->db->order_by("date", "desc");
$this->data['query'] = $this->db->get_where('blog-entries', array('status' => 'P'), 3);
Run Code Online (Sandbox Code Playgroud)

但是我在这个页面上收到错误:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (`blog-entries`) WHERE `status` = 'P' ORDER BY `date` desc LIMIT 3' at line 2
Run Code Online (Sandbox Code Playgroud)

该查询实际上正在运行:

SELECT SUBSTRING(body, `5)` FROM (`blog-entries`) WHERE `status` = 'P' ORDER BY `date` desc LIMIT 3
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,由于某种原因,在子字符串中的数字5周围添加了撇号.如果我删除子字符串然后一切正常,如果我删除撇号并直接在我的数据库上运行查询它也有效.

有没有任何想法为什么这可能发生或有解决方案?

非常感谢您的帮助.

非常感谢,

G.

Mic*_*ton 5

用这个:

$this->db->select("SUBSTRING(body,5)", FALSE);
Run Code Online (Sandbox Code Playgroud)

作为默认值,Codeigniter会尝试在其认为相关的位置添加反向标记.有时它会将它们添加到不应该的地方.FALSE作为第二个参数传递阻止它执行此操作.