preparadas - php pdo get last id insert
Obtener la última identificación de inserción después de una inserción preparada con PDO (3)
Del manual PHP:
Por ejemplo, PDO_PGSQL () requiere que especifique el nombre de un objeto de secuencia para el parámetro de nombre.
También podría usar RETURNING en la instrucción INSERT y obtener el resultado INSERT como un resultado SELECT.
Estoy usando PHP PDO con PostgreSQL para un nuevo proyecto.
Dada la siguiente función, ¿cómo puedo devolver la identificación de la fila recién insertada? No funciona como se ve ahora.
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;
}
Del Manual :
Devuelve el ID de la última fila insertada, o el último valor de un objeto de secuencia, dependiendo del controlador subyacente. Por ejemplo, PDO_PGSQL () requiere que especifique el nombre de un objeto de secuencia para el parámetro de nombre.
Debería ser algo así como:
return $db->lastInsertId(''yourIdColumn'');
[EDITAR] Actualizar enlace al documento
Las respuestas anteriores no son muy claras (PDO doc también)
En postgreSQL, las secuencias se crean cuando usa el tipo de datos SERIAL
.
CREATE TABLE ingredients (
id SERIAL PRIMARY KEY,
name varchar(255) NOT NULL,
);
Entonces el nombre de la secuencia será ingredients_id_seq
$db->lastInsertId(''ingredients_id_seq'');