PDO准备好的语句返回不正确的lastInsertId

时间:2018-10-22 09:49:33

标签: php mysql modx last-insert-id xpdo

我的头快要爆炸了。

我正在尝试使用准备好的语句(它是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 个答案:

没有答案