PDO postgresql 最后插入的 id 返回 'false' 或 -1

Posted

技术标签:

【中文标题】PDO postgresql 最后插入的 id 返回 \'false\' 或 -1【英文标题】:PDO postgresql last inserted id return 'false' or -1PDO postgresql 最后插入的 id 返回 'false' 或 -1 【发布时间】:2017-11-03 13:40:07 【问题描述】:

我有代码

$dbh = new PDO("pgsql:host=localhost; port=5432; dbname=gpd; user=postgres; password=postgres");
$sth = $dbh->prepare("INSERT INTO res (res_name, res_order) VALUES ('London', 1)");
$sth->execute();
$id = $dbh->lastInsertId();
echo $id;

记录插入,但 $id 为空。

我尝试执行查询 INSERT INTO res (res_name, res_order) VALUES ('London', 1) RETURNING id

并收到一个值“-1”

【问题讨论】:

可以分享res的表结构吗? CREATE TABLE res (id SERIAL PRIMARY KEY, res_name VARCHAR(100) DEFAULT '' NOT NULL, res_order INT DEFAULT 1 NOT NULL) 【参考方案1】:

回家,我自己明白必须做什么

$dbh = new PDO("pgsql:host=localhost; port=5432; dbname=gpd; user=postgres; password=postgres");    
$sth = $dbh->prepare("INSERT INTO res (res_name, res_order) VALUES ('London', 1)");    
$sth->execute();    
$result = $sth->fetch(PDO::FETCH_ASSOC);    
echo "ID - ". $result["id"];

很简单

【讨论】:

以上是关于PDO postgresql 最后插入的 id 返回 'false' 或 -1的主要内容,如果未能解决你的问题,请参考以下文章

如何获取最后插入的ID,以及PDO列的名称?

PDO 最后插入 id 返回 0

PDO将最后一个插入ID插入两个表

php PDO - 如何获取最后插入的ID?

如果需要,插入更新 pdo mysql 查询并获取最后插入的 id

PDO 获取多个插入 ID