问题与活动记录类中的where子句

时间:2011-08-10 17:48:19

标签: codeigniter

$params['title']是一个字符串,$params['feed']是一个整数。列的“标题”类型为varchar,列的“Feed”类型为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 :(得分:0)

看起来这个SimpleXML类的title属性不是字符串。

您可以在获得它后立即将其强制转换为字符串,而不是等到您执行插入操作。

data['title'] = (string) $item->title;