如何解决zend framework insert和LAST_INSERT_ID拧紧了
|| 所以我尝试使用Zend_Db_Adapter_Pdo_Mysql \的insert()方法。 然后我发出了“ 0”命令。 但是由于某种原因,该命令总是返回0而不是实际插入的ID ... 当我尝试使用普通的INSERT查询,然后获取最后一个插入ID时,它的工作正常,所以我想这是一些zend框架搞砸了... 有谁知道如何解决这个问题? insert()方法仅在成功时返回1,而不是返回id,因此解决方案:最后一个带有zend db table abstract的插入id似乎不起作用解决方法
Zend_Db_Adaptor文档说明
一些RDBMS品牌支持自动增量主键。以这种方式定义的表在插入新行期间会自动生成一个主键值。 insert()方法的返回值不是最后插入的ID,因为该表可能没有自动递增的列。相反,返回值是受影响的行数(通常为1)。
如果您的表格是用
自动递增主键,您可以
之后调用lastInsertId()方法
插入。此方法返回
在范围内生成的最后一个值
当前的数据库连接。
所以...
$id = $db->lastInsertId();
应该管用
,您的问题还不清楚。不过,我认为至少有一部分问题是您将Zend_Db_Adapter_Abstract
(或Zend_Db_Adapter_Pdo_Mysql
)中的插入方法与ѭ4from中的插入方法相混淆。这两个类都具有称为“ 5”的方法,但是它们的工作方式不同。
Zend_Db_Adapter_Abstract
中的insert
方法返回\“受影响的行数\” ,,Zend_Db_Table_Abstract
中的insert
返回\“插入行的主键\”。
您提供的链接正在使用from4ѭ中的insert。但是,似乎您正在使用ѭ11中的insert。因此,您总是得到1的回报。
,在ZF2中,您可以使用:
$id = $this->lastInsertValue;
,在ZF3和Zend Expressive中,这是唯一的方法:
$this->dbAdapter->getDriver()->getLastGeneratedValue();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。