使用 PDO 和 PHP 从 MSSQL table 获取最后插入的记录的 ID

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

我正在尝试通过 php 使用 pdo 获取插入到 mssql 数据库中的最后一条记录的 ID。我已经阅读了很多 post,但仍然无法让这个简单的示例起作用,所以我求助于您。之前的许多答案只给出了 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() 函数。我已经阅读了一些解决方案,但需要更多帮助才能让它们发挥作用。

One post 这里建议使用 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