簡體   English   中英

使用 PDO 在准備好插入后獲取最后一個插入 id

[英]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');

[編輯] 更新文檔鏈接

從 PHP手冊

例如,PDO_PGSQL() 要求您為 name 參數指定序列對象的名稱。

您還可以在 INSERT 語句中使用RETURNING並像 SELECT 結果一樣獲取 INSERT 結果。

以前的答案不是很清楚(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM