问题
That's the source code, I need to detect the ID (see the marked position between the two queries below).
$connection = Yii::app()->db;
$transaction=$connection->beginTransaction();
try {
$q = "INSERT INTO `someTable1` .... ";
$connection->createCommand($q)->execute(); // Single Row Inserted
// HERE!! How to get the last insert ID from query above
$q = "INSERT INTO `someTable2` ....
WHERE id = LAST_INSERT_ID_FROM_FIRST_QUERY ";
$connection->createCommand($q)->execute();
$transaction->commit();
} catch (Exception $e) {
// react on exception
$trans->rollback();
}
What would be the most suitable way to do that?
回答1:
$lastInsertID = $connection->getLastInsertID();
回答2:
you can try both way,here getLastInsertID is method and lastInsertID is property
$lastInsertID = $connection->getLastInsertID();
or
$lastInsertID = $connection->lastInsertID;
for more info http://www.yiiframework.com/doc/api/1.1/CDbConnection
回答3:
i created this to solve that issue
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;
}
来源:https://stackoverflow.com/questions/24014286/how-to-detect-the-last-insert-id-within-a-transaction-in-yii-using-dao