所以我尝试使用Zend_Db_Adapter_Pdo_Mysql的insert()方法。

然后,我发出了SELECT LAST_INSERT_ID();命令。

但是由于某种原因,该命令总是返回0而不是实际插入的ID ...

当我尝试使用普通的INSERT查询,然后获取最后一个插入ID时,它的工作正常,所以我想这是zend框架搞砸了...

有谁知道如何解决这个问题?

insert()方法仅在成功时返回1,而不是返回ID,因此解决方案:last insert id with zend db table abstract似乎不起作用

最佳答案

Zend_Db_Adaptor文档说明


  一些RDBMS品牌支持自动增量主键。以这种方式定义的表在插入新行期间会自动生成一个主键值。 insert()方法的返回值不是最后插入的ID,因为表可能没有自动递增的列。相反,返回值是受影响的行数(通常为1)。
  
  如果您的表格是用
  自动递增主键,您可以
  之后调用lastInsertId()方法
  插入。此方法返回
  在范围内生成的最后一个值
  当前的数据库连接。


所以...

$id = $db->lastInsertId();


应该管用

关于mysql - zend framework insert()和LAST_INSERT_ID()搞砸了,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6096147/

10-13 00:53