簡體   English   中英

使用PDO和PHP從MSSQL表中獲取最后插入的記錄的ID

[英]Getting the id of the last inserted record from an MSSQL table using PDO and PHP

我試圖通過php通過pdo獲取插入mssql數據庫中的最后一條記錄的ID。 我已經閱讀了許多帖子,但仍然無法使這個簡單的示例正常工作,因此我轉向您。 先前的許多答案僅給出了SQL代碼,但沒有說明如何將其合並到PHP中。 老實說,我不認為這是重復的。 基本插入代碼為:

$CustID = "a123";
$Name="James"
$stmt = "
        INSERT INTO OrderHeader (
            CustID, 
            Name 
        ) VALUES (
            :CustID, 
            :Name
        )";
        $stmt = $db->prepare( stmt  );
        $stmt->bindParam(':CustID', $CustID);       
        $stmt->bindParam(':Name', $Name);
        $stmt->execute();

我必須使用PDO查詢MSSQL數據庫。 不幸的是,驅動程序不支持此數據庫的lastinsertid()函數。 我已經閱讀了一些解決方案,但需要更多幫助才能使其正常工作。

這里的一篇文章建議使用SELECT SCOPE_IDENTITY(),但沒有給出如何將其合並到上面的基本插入代碼中的示例。 另一個用戶建議:

    $temp = $stmt->fetch(PDO::FETCH_ASSOC);

但是,這沒有產生任何結果。

如果您的id列名為id ,則可以使用OUTPUT返回最后插入的id值,並執行以下操作:

    $CustID = "a123";
    $Name="James"
    $stmt = "INSERT INTO OrderHeader (CustID, Name) 
             OUTPUT INSERTED.id
             VALUES (:CustID, :Name)";

    $stmt = $db->prepare( stmt  );
    $stmt->bindParam(':CustID', $CustID);       
    $stmt->bindParam(':Name', $Name);
    $stmt->execute();

    $result = $stmt->fetch(PDO::FETCH_ASSOC);
    echo $result["id"]; //This is the last inserted id returned by the insert query

閱讀更多信息:

https://msdn.microsoft.com/en-us/library/ms177564.aspx

http://php.net/manual/es/pdo.lastinsertid.php

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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