繁体   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