dongnai1876 2018-10-22 09:49
浏览 85

PDO预处理语句返回不正确的lastInsertId

My head is close to explode.

I'm trying to insert a lot of rows to database using prepared statements (it's MODx cms).

Query looks like:

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

Next step is

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

And I have some rows in the table, that were filled before. When I'm trying to execute the script, only the first $eid is correct and points to an existing row. Every next value of $eid is more than even AUTO_INCREMENT value for the table.

Tried different variants, but $eid is correct only when I'm deleting prepared statement and using a usual query.

Help please...

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 GDI处理通道视频时总是带有白色锯齿
    • ¥20 用雷电模拟器安装百达屋apk一直闪退
    • ¥15 算能科技20240506咨询(拒绝大模型回答)
    • ¥15 自适应 AR 模型 参数估计Matlab程序
    • ¥100 角动量包络面如何用MATLAB绘制
    • ¥15 merge函数占用内存过大
    • ¥15 Revit2020下载问题
    • ¥15 使用EMD去噪处理RML2016数据集时候的原理
    • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
    • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数