Php 如何使用DAO在Yii中检测事务中的最后一个插入ID?
这是源代码,我需要检测ID(参见下面两个查询之间的标记位置)Php 如何使用DAO在Yii中检测事务中的最后一个插入ID?,php,yii,transactions,dao,lastinsertid,Php,Yii,Transactions,Dao,Lastinsertid,这是源代码,我需要检测ID(参见下面两个查询之间的标记位置) 最合适的方法是什么 两种方法都可以尝试,这里getLastInsertID是方法,lastInsertID是属性 $lastInsertID = $connection->getLastInsertID(); $lastInsertID = $connection->getLastInsertID(); 或 要了解更多信息,我创建了这个来解决这个问题 public static function getAutoIncr
最合适的方法是什么 两种方法都可以尝试,这里getLastInsertID是方法,lastInsertID是属性
$lastInsertID = $connection->getLastInsertID();
$lastInsertID = $connection->getLastInsertID();
或
要了解更多信息,我创建了这个来解决这个问题
public static function getAutoIncrement($table_name)
{
$q = new Query();
$res = $q->select("AUTO_INCREMENT")
->from('INFORMATION_SCHEMA.TABLES')
->where("TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '" . $table_name . "'")
->one();
if ($res)
return $res["AUTO_INCREMENT"];
return false;
}
您尝试过使用CDbConnection类中的getLastInsertID()吗?()谢谢@AleksanderKseniya,这很有效!这在使用批后插入时不起作用,因为批插入的工作方式类似于堆栈,即使您获取LastInsertId,它也会返回记录,这实际上是数据库中的第一条新记录,但这是另一个用例
$lastInsertID = $connection->lastInsertID;
public static function getAutoIncrement($table_name)
{
$q = new Query();
$res = $q->select("AUTO_INCREMENT")
->from('INFORMATION_SCHEMA.TABLES')
->where("TABLE_SCHEMA = DATABASE() AND TABLE_NAME = '" . $table_name . "'")
->one();
if ($res)
return $res["AUTO_INCREMENT"];
return false;
}