web-dev-qa-db-ja.com

挿入PDOMySQLで挿入IDを取得する

PDOの基本を理解しています。

ただし、挿入された行のIDを取得しようとしていますが、次を使用しています。

$query = $system->db->prepare("INSERT INTO {$this->_table} (name,description) VALUES (:name,:description)");
$query->execute(array('name'=>$name,'description'=>$description));

私が出会ったチュートリアルはトランザクションに関するものですが、私はトランザクションを使用していません!

18
pondpad

あなたはおそらく lastInsertId を探しています。 「最後に挿入された行またはシーケンス値のIDを返します」。

$insertedId = $system->db->lastInsertId() ;
33
Fanis

トランザクションを使用するときは注意してください。

lastInsertedIdを呼び出した後にcommitを呼び出すと、lastInsertedIdはIDの代わりに0を返します。 lastInsertedIdの直後でexecuteの前にcommitを呼び出します。

$this->db->beginTransaction();
$this->stmt->execute();
$id = $this->db->lastInsertId();
$this->db->commit();
10
Daniel Miranda