【问题标题】:Getting the id of the last inserted record from an MSSQL table using PDO and PHP使用 PDO 和 PHP 从 SQL 表中获取最后插入记录的 id
【发布时间】:2015-06-24 23:00:36
【问题描述】:

我正在尝试通过 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);

但是,这并没有产生任何结果。

【问题讨论】:

  • 您可以在此之后进行查询 -> $stmt->query('SELECT MAX(id) as id FROM OrderHeader')$stmt->query('SELECT id FROM OrderHeader ORDER BY id DESC')。然后$temp = $stmt->fetch(PDO::FETCH_ASSOC); echo $temp['id']; //last inserted id

标签: php sql sql-server database pdo


【解决方案1】:

如果您的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

【讨论】:

    猜你喜欢
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2018-11-06
    相关资源
    最近更新 更多