我的PDO::lastInsertId()
方法不返回最后插入行的 id(主键),而是返回另一个作为外键字段的字段。
PHP代码:
$pdo = new PDO(...);
$stmt = $pdo->prepare($sql);
$stmt->bindParam(...);
$stmt->bindParam(...);
$stmt->execute();
$id = $pdo->lastInsertId();
// or
$id = $pdo->lastInsertId('services_id_seq'); // I think 'services_id_seq' is not necessary in MySQL
// both of them don't return the primary key of last inserted row
echo 'last inserted id: ' . $id;
MySQL表结构:
...
id int unsigned not null primary key auto_increment
customer_id int unsigned not null
user_id int unsigned not null
....
在 MySQL 中插入行:
id customer_id user_id ...
1 19 31 ...
PHP 输出:
last inserted id: 19
1
它不应该返回19
。我不知道我的代码有什么问题……或者这可能是正常行为:?
返回值(PHP 文档):
如果没有为 name 参数指定序列名称,则
PDO::lastInsertId()
返回一个字符串,该字符串表示ID
插入数据库的最后一行的行。如果为 name 参数指定了序列名称,则
PDO::lastInsertId()
返回一个字符串,该字符串表示从指定序列对象中检索到的最后一个值。如果
PDO
驱动程序不支持此功能,则PDO::lastInsertId()
触发IM001 SQLSTATE
.