$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类型。
答案 0 :(得分:0)
看起来这个SimpleXML类的title
属性不是字符串。
您可以在获得它后立即将其强制转换为字符串,而不是等到您执行插入操作。
data['title'] = (string) $item->title;