2

我有以下代码(删除了实际数据),它成功地将一条记录写入我的表中。

$db = new database('db_name');
$sql='INSERT INTO table (fieldshere);';
$pds=$db->pdo->prepare($sql);
$pds->execute(array(datahere));

$_SESSION['userid'] = $db->pdo->lastInsertId();

我遇到的问题是它返回前一个记录号 - 例如:如果它刚刚写入记录号 100,它返回号 99。

我可以在表格行号上看到自动增量,这看起来很正常。例如:如果表行当前为 100,则自动增量为 101(用于下一行)。

该表从 0 号开始,但仍不确定这是否有任何问题。

任何事情都是该表有一个用户标识列,该列具有自动增量,这是我需要的数字。

有什么理由让我得到前一个行号?

谢谢

4

1 回答 1

2

如果您使用的是 postgreSQL,您可能会在此处发布相同的问题: Get last insert id after a prepare insert with PDO

您可能应该指定 lastInsertId() 方法的“名称”参数:“应该从中返回 ID 的序列对象的名称。”

于 2013-03-14T09:26:20.630 回答