2015-02-09 4 views

risposta

5

È possibile farlo utilizzando:

$lastInsertID = $db->getLastInsertID(); 
echo $lastInsertID; 
+1

possibile duplicato di [Come individuare l'ultimo ID di inserimento in una transazione in Yii utilizzando DAO ?] (http://stackoverflow.com/questions/24014286/how-to-detect-the-last-insert-id-within-a-transaction-in-yii-using-dao) – Sadikhasan

30
Yii::$app->db->createCommand($sql)->execute(); 

Poi chiamata di funzione getLastInsertID,

$id = Yii::$app->db->getLastInsertID(); 
+2

È sicuro contro le condizioni di gara ? Per esempio. l'utente A si inserisce in 'items' e l'id di questa riga appena inserita è 5 e prima di A chiama' getLastInsertID() 'l'utente B inserisce un'altra riga. Ora A chiama detto metodo. Otterrà 5 o 6? – DBX12

+0

public static function getAutoIncrement ($ table_name) { $ q = new Query(); $ res = $ q-> selezionare ("AUTO_INCREMENT") -> da ('') INFORMATION_SCHEMA.TABLES -> dove ("TABLE_SCHEMA = DATABASE() e TABLE_NAME = '".. $ Table_name "'") -> uno(); if ($ res) return $ res ["AUTO_INCREMENT"]; return false; } – yousef