1
IDに基づいて、あるテーブルから別のテーブルに複数の行を挿入しています。 このプロジェクトでは、すべてのDBクエリにPDOを使用しています。これは私が使用しているコード/機能です:最後に挿入されたIDをMySQLから取得できません
protected function importData($data) {
$i = 0;
$this->db->beginTransaction();
foreach($data as $item) {
$id = $item['id'];
$sql .= "INSERT INTO table1 (name,age)
SELECT name, age
FROM table12
WHERE id = $id; ";
$this->db->exec($sql);
$i++;
}
$this->db->commit();
// None of these are working
$last_id1 = $this->db->exec('SELECT LAST_INSERT_ID()');
$last_id2 = $this->db->lastInsertId();
echo 'id1: '.$last_id1.', id2:'.$last_id2;
}
しかし、私は最後に挿入されたIDを取得できません。 SELECT LAST_INSERT_ID()
をToad for MySQL
に入れてみると結果は得られますが、最後に挿入された行のIDではありません。
このように行を挿入すると、最後に挿入された行IDが登録されないのはなぜですか?
beginTransaction
とcommit
を使用しているため、1つのトランザクションとして扱われていますか?