[英]Get last insert id after a prepared insert with PDO
我在一个新项目中使用 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;
}
从手册:
返回最后插入行的 ID,或序列对象的最后一个值,具体取决于底层驱动程序。 例如,PDO_PGSQL() 要求您为 name 参数指定序列对象的名称。
它应该是这样的:
return $db->lastInsertId('yourIdColumn');
[编辑] 更新文档链接
以前的答案不是很清楚(PDO 文档也是如此)
在 postgreSQL 中,序列是在您使用SERIAL
数据类型时创建的。
CREATE TABLE ingredients (
id SERIAL PRIMARY KEY,
name varchar(255) NOT NULL,
);
所以序列名称将是ingredients_id_seq
$db->lastInsertId('ingredients_id_seq');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.