J'utilise PHP PDO avec PostgreSQL pour un nouveau projet.
Étant donné la fonction suivante, comment puis-je retourner l'id de la ligne qui vient d'être insérée? Ça ne marche pas comme ça maintenant.
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;
}
Depuis le Manuel :
Renvoie l'ID de la dernière ligne insérée ou la dernière valeur d'un objet séquence, selon le pilote sous-jacent. Par exemple, PDO_PGSQL () vous oblige à spécifier le nom d'un objet séquence pour le paramètre name.
Cela devrait être quelque chose comme:
return $db->lastInsertId('yourIdColumn');
[MODIFIER] Mettre à jour le lien vers le document
Les réponses précédentes ne sont pas très claires (doc AOP aussi)
Dans postgreSQL, les séquences sont créées lorsque vous utilisez le type de données SERIAL
.
CREATE TABLE ingredients (
id SERIAL PRIMARY KEY,
name varchar(255) NOT NULL,
);
Le nom de la séquence sera donc ingredients_id_seq
$db->lastInsertId('ingredients_id_seq');