Подготовленный оператор PDO возвращает неправильный lastInsertId

Моя голова близка к взрыву.

Я пытаюсь вставить много строк в базу данных, используя подготовленные операторы (это MODx CMS).

Запрос выглядит так:

INSERT INTO {$table} (`fio`, `address`, `code`) 
VALUES (?, ?, ?)
ON DUPLICATE KEY UPDATE 
   fio = VALUES(fio),
   address = VALUES(address),
   code = VALUES(code),
   `eid` = LAST_INSERT_ID(eid);

Следующий шаг

foreach ( $data as $k=>$v){
   $q->execute(array($v['fio'], $v['address'], $v['code']));
   $eid = $this->modx->lastInsertId('eid');
}

И у меня есть несколько строк в таблице, которые были заполнены ранее. Когда я пытаюсь выполнить скрипт, только первый $eid является правильным и указывает на существующую строку. Каждое следующее значение $eid больше, чем даже значение AUTO_INCREMENT для таблицы.

Перепробовал разные варианты, но $eid корректен только тогда, когда я удаляю подготовленный оператор и использую обычный запрос.

Помогите, пожалуйста...

0 ответов

Другие вопросы по тегам