我的表结构是:
TABLE `licenses` (
`id` int(11) NOT NULL auto_increment,
`code` varchar(30) collate utf8_unicode_ci NOT NULL,
`title` varchar(255) collate utf8_unicode_ci NOT NULL,
`description` text collate utf8_unicode_ci NOT NULL,
`license_type` char(1) collate utf8_unicode_ci NOT NULL default 'b',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
目前有数据:
(`id`, `code`, `title`, `description`, `license_type`)
(2, 'asd', 'asdt', 'asdd', 'b')
我的数据库对象很好并正常工作:$ db [类:Zend_Db_Adapter_Pdo_Mysql]
我用它来更新:
$data=array( 'id' => 2 , 'code' => 'asd' , 'title' => 'asdt' , 'description' => 'asdd' , 'license_type' => 'b');
$db->update('licenses' , $data , $db->quoteInto(" id = ? " , $data['id']));
返回rowcount = 0;数据库中没有更新任何内容。
我的数据库是Mysql。任何人都有任何想法,发生了什么。
答案 0 :(得分:1)
问题是,即使执行sql,$ db-> update(....)也返回'0',但是作为bind参数提供的数据(上面的$ data)是包含在原始数据中的原始数据。表,我的意思是当sql没有更改数据时。所以我们的代码不能依赖返回的行数。