首页 > 解决方案 > 努力使用 MS SQL 检索 PHP 中的最后一个插入 ID

问题描述

我知道有类似的问题,我尝试了各种例子,但我似乎遗漏了一些东西。

我正在使用 PHP 在 MS SQL 表中插入一条记录,代码如下...

 $sql = "Insert into MyTable (column1,column2,column3) VALUES (? , ? , ?);";
 $params = array($value1,$value2,$value3);
 $stmt = sqlsrv_query( $conn, $sql, $params);
 if( $stmt === false ) {
 Echo "Error writing new application to table";
 }  

这工作正常并添加了我的记录,但我需要获取最后插入记录的“id”。

看了一些以前的问题,我尝试了几种不同的方法,最近这个......

 $sql = "Insert into MyTable (column1,column2,column3) VALUES (? , ? , ?);";
 $params = array($value1,$value2,$value3);
 $stmt = sqlsrv_query( $conn, $sql, $params);
 sqlsrv_next_result($stmt); 
 sqlsrv_fetch($stmt);
 $lastInsertedId = lastId($stmt);
 echo "RECORD INSERTED WITH ID: " . $lastInsertedId . "<BR>"; 
 if( $stmt === false ) {
 Echo "Error writing new application to table";
 }

但“lastInsertedId”返回空白。

当我过去做过类似的事情时,虽然不是在 PHP 中,但我在插入命令的末尾有一个附加命令,并使用了与查询不同的函数,但我似乎找不到任何这样的例子。

谁能指出我正确的方向?

提前谢谢了!

编辑/解决方案:

所以我终于得到了这个工作......提供的其他例子都返回了一个空值,除了一个返回数组的例子,所以我尝试在最后抛出 ["id"] 并繁荣......就在那里!

 $sql = "Insert into MyTable(column1,column2,column3) VALUES (? , ? , ?); SELECT @@IDENTITY as id;";
 $params = array($value1,$value2,$value3);
 $stmt = sqlsrv_query( $conn, $sql, $params);
 $next_result = sqlsrv_next_result($stmt); 
 $row = sqlsrv_fetch_array($stmt); 
 echo "ROW INSERTED WITH ID : " . $row["id"];
 if( $stmt === false ) {
 Echo "Error writing new application to table";
 }  

如果您遇到同样烦人的简单问题,希望这可能对您有所帮助。

标签: phpsql-serverlast-insert-id

解决方案


查看在线文档,它看起来lastId()不是 PHP 方法。你应该尝试这样mysql_insert_id()的事情:

检索上一个查询(通常是 INSERT)为 AUTO_INCREMENT 列生成的 ID。

不幸的是,根据官方文档,此扩展在 PHP 5.5.0 中已被弃用,并在 PHP 7.0.0 中被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。


推荐阅读