使用PDO准备插入后获取最后一个插入ID
我正在使用PostgreSQL的PHP PDO为一个新的项目。
鉴于以下function,我怎样才能返回刚刚插入的行的ID? 它现在看起来不行。
function adauga_administrator($detalii) { global $db; $ultima_logare = date('Ym-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');
从PHP 手册 :
例如,PDO_PGSQL()要求您为name参数指定序列对象的名称。
您也可以在INSERT语句中使用RETURNING ,并像SELECT结果一样获取INSERT结果。
以前的答案不是很清楚(PDO文档)
在PostgreSQL里,当你使用SERIAL
数据types的时候创build序列。
CREATE TABLE ingredients ( id SERIAL PRIMARY KEY, name varchar(255) NOT NULL, );
所以序列名称将是ingredients_id_seq
$db->lastInsertId('ingredients_id_seq');