Проблема с предложением where в классе активных записей - PullRequest
0 голосов
/ 10 августа 2011

$params['title'] - строка, а $params['feed'] - целое число.Тип заголовка столбца - varchar, а тип фида столбца - integer.Код PHP:

$this->db->where('title', $params['title']);
$this->db->where('feed', $params['feed']);
$query = $this->db->get('news');

Так что все должно быть хорошо, НО ...

A Database Error Occurred
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 'riots: intense anger after deaths of three young men AND `feed` = '1'' at line 3
SELECT * FROM (`news`) WHERE `title` = Birmingham riots: intense anger after deaths of three young men AND `feed` = '1'
Filename: C:\path\system\database\DB_driver.php
Line Number: 330

Конечно, очевидно, почему произошла ошибка.Есть ли способ исправить это (кроме не использовать активный класс записи)?Посмотрел документацию CI, но понятия не имел, почему возникла эта проблема.

РЕДАКТИРОВАТЬ

Решено путем изменения на

$this->db->where('title', (string) $params['title']);

И другой пункт соответственно,А теперь есть куча одинаковых ошибок в других моделях.Ну, я думаю, что единственное решение - это везде добавлять вручную тип var.

1 Ответ

0 голосов
/ 11 августа 2011

Похоже, что свойство title этого класса SimpleXML не является строкой.

Вы можете просто привести его к строке, как только получите, вместо того, чтобы ждать вставки.

data['title'] = (string) $item->title;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...