我试图通过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);
但是,这并没有产生任何结果。
答案 0 :(得分:3)
如果您的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
阅读更多内容: