我正在将PHP PDO与PostgreSQL一起用于一个新项目.

给定以下函数,如何返回刚刚插入的行的id?

function adauga_administrator($detalii) {
    global $db;
    $ultima_logare = date('Y-m-d');

    $stmt = $db->prepare("INSERT INTO site_admins (sa_nume, sa_prenume, sa_user_name, sa_password, sa_email, sa_id_rol, sa_status, sa_ultima_logare) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
    $stmt->bindParam(1, $detalii['nume']);
    $stmt->bindParam(2, $detalii['prenume']);
    $stmt->bindParam(3, $detalii['username']);
    $stmt->bindParam(4, md5(md5($detalii['parola'] . SIGURANTA_PAROLE) . SIGURANTA_PAROLE));
    $stmt->bindParam(5, $detalii['email']);
    $stmt->bindParam(6, $detalii['rol'], PDO::PARAM_INT);
    $stmt->bindParam(7, $detalii['status'], PDO::PARAM_INT);
    $stmt->bindParam(8, $ultima_logare);    
    $stmt->execute(); 

    $id = $db->lastInsertId();
    return $id;
}

推荐答案

Manual人中:

返回上次插入的文件的ID

应该是这样的:

return $db->lastInsertId('yourIdColumn');

[编辑]更新文档链接

Postgresql相关问答推荐

在Docker Compose中获取CSV文件数据?

如何将存储的、生成的列添加到非常大的表中?

在同一 Select 列表中两次使用jsonb_arrayElements()是否安全?

复合索引列的顺序导致不同的计划

Postgres从spark触发post-write

Postgres 对 WHERE 子句并行使用两个索引

在 postgres/presto/AWS-Athena 中,与 array_agg( (col1, col2) ) 相反的是什么来获得每组多行?

带有附加组的时间刻度 interpolated_average

函数将多列作为单列而不是多列返回

postgresql 更新错误ERROR: invalid input syntax for type boolean:

Postgres中的GROUP BY - JSON数据类型不相等?

升级到 OSX Mavericks 后修复 postgresql

如何使用 pg_dump 或 psql 从 *.sql 恢复 PostgreSQL 表?

声明变量set = select

大型查询后 psycopg2 泄漏内存

具有 DEFAULT NULL 的 MySQL 列 ?

Postgresql:备份所有表 struct ,但只备份少数数据表

PostgreSQL - 作为表名的动态值

使用 PostgreSQL 进行字母数字排序

PostgreSQL - GROUP BY 子句或用于聚合函数