php - 努力使用 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";
}
如果您遇到同样烦人的简单问题,希望这可能对您有所帮助。
解决方案
查看在线文档,它看起来lastId()
不是 PHP 方法。你应该尝试这样mysql_insert_id()
的事情:
检索上一个查询(通常是 INSERT)为 AUTO_INCREMENT 列生成的 ID。
不幸的是,根据官方文档,此扩展在 PHP 5.5.0 中已被弃用,并在 PHP 7.0.0 中被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。
推荐阅读
- javascript - javamail.setFrom() 在我的春季项目中不起作用
- css - 调整选项列表和面板的大小时出错。面板重叠选项列表的位置
- java - Vaadin 和 Spring Security:“/VAADIN/**”路由
- ajax - Ajax 中的产品过滤器将在 Wordpress 中工作
- jquery - 如何将按钮附加到表格
- symfony - 如何在 Symfony4.3 中安装 HWIOAuthBundle?
- javascript - 为什么我的可折叠按钮不折叠?
- javascript - Botium - 需要帮助来配置 Amazon Alexa 的规范文件
- powershell - 如何通过 Powershell 查询上次登录日期
- amazon-web-services - 如何使用 cloudformation 模板传递 aws-lambda 函数名称以生成 cloudwatch 警报