2

私を困惑させてきた奇妙な問題が少しあります。私がやろうとしているのは、データベース テーブルに対してクエリを実行することだけですが、何らかの理由で 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.

4

1 に答える 1

5

これを使って:

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

デフォルトでは、Codeigniter は関連すると思われる場所にバックティックを追加しようとします。時々、追加すべきではない場所に追加します。FALSE2 番目のパラメーターとして渡すと、これが行われなくなります。

于 2012-04-28T11:32:44.010 に答える