Не удалось получить последний вставленный идентификатор из MySQL - PullRequest
1 голос
/ 03 августа 2011

Я вставляю несколько строк из одной таблицы в другую на основе идентификатора.Для этого проекта я использую PDO для всех запросов к БД.Это код / ​​функция, которую я использую:

  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;
  }

Но по некоторым причинам я не могу получить последний вставленный идентификатор.Если я попытаюсь SELECT LAST_INSERT_ID() в Toad for MySQL, я получу результат, но это не идентификатор последней вставленной строки.

Почему идентификатор последней вставленной строки не регистрируется при вставке строк таким образом?
Это потому, что я использую beginTransaction и commit и, следовательно, он обрабатывается как одна транзакция?

1 Ответ

4 голосов
/ 03 августа 2011

Да, это так. Вам необходимо получить идентификатор, прежде чем совершать транзакцию.

...