1
ID를 기반으로 한 테이블에서 다른 테이블로 여러 행을 삽입합니다. 이 프로젝트에서는 모든 DB 쿼리에 PDO를 사용하고 있습니다. 이것은 내가 사용하고있는 코드/기능입니다 :MySQL에서 마지막으로 삽입 된 ID를 가져올 수 없습니다.
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;
}
그러나 일부 resaon에서는 마지막으로 삽입 된 ID를 가져올 수 없습니다. SELECT LAST_INSERT_ID()
을 Toad for MySQL
에 입력하면 결과가 표시되지만 마지막으로 삽입 된 행의 ID가 아닙니다.
이렇게 행을 삽입 할 때 마지막으로 삽입 한 행 ID가 등록되지 않은 이유는 무엇입니까?
나는 beginTransaction
과 commit
을 사용하고 있기 때문에 하나의 트랜잭션으로 처리됩니까?