Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter在数据库查询中插入撇号_Php_Database_Codeigniter_Substring_Apostrophe - Fatal编程技术网

Php CodeIgniter在数据库查询中插入撇号

Php CodeIgniter在数据库查询中插入撇号,php,database,codeigniter,substring,apostrophe,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('

我有一个奇怪的问题一直困扰着我。我所要做的只是在数据库表上运行一个查询,但出于某种原因,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);
但我在这页上看到一个错误:

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
查询的实际运行方式为:

SELECT SUBSTRING(body, `5)` FROM (`blog-entries`) WHERE `status` = 'P' ORDER BY `date` desc LIMIT 3
正如您所看到的,由于某些原因,在子字符串中的数字5周围添加了撇号。如果我删除了子字符串,那么一切都正常,如果我删除撇号并直接在我的数据库上运行查询,它也正常工作

有没有关于为什么会发生这种情况的想法,或者有没有解决办法

非常感谢你的帮助

非常感谢,

G.

使用以下方法:

$this->db->select("SUBSTRING(body,5)", FALSE);

默认情况下,Codeigniter尝试在其认为相关的地方添加回刻度。有时它会在不应该的地方添加它们。将
FALSE
作为第二个参数传递会阻止它这样做。

实际上添加的是回勾,而不是撇号。只是想澄清一下。是否添加
FALSE
作为第二个参数,如
$this->db->select(“SUBSTRING(body,5)”,FALSE)修复它?这应该可以阻止CodeIgniter添加反勾号。这就是为什么我讨厌这些愚蠢的查询生成器,将简单的查询放入屏幕上的意大利面块。公平地说,他们中的大多数人还可以选择只手动键入整个查询,而不使用生成器。你可以选择。非常感谢你的回复。这确实消除了数据库错误,但是,它似乎没有运行查询,因为我在写入查询字段的页面上出现错误:我收到了“Message:Undefined property”错误消息。我将尝试获取“body”字段,并将其子串,直接从控制器输出字段,而不是整个查询。实际上,我想我意识到发生了什么。我只需要将其他字段添加到选择中!我最终选择了定义整个查询,而不是使用查询生成器。非常感谢你们的帮助!