使用php_mssql驱动程序可以正常运行此查询:
INSERT INTO Table(columnName) VALUES ('text');
SELECT SCOPE_IDENTITY() AS id;
表有一个id列,它是一个标识。 我会执行该查询,并获取表中的最后一个ID。
如果使用Microsoft的php_sqlsrv驱动程序执行查询,则相同的代码不起作用。
执行查询时没有出现任何错误(sqlsrv_query函数),但调用sqlsrv_fetch_array时出现以下错误: “查询的活动结果不包含任何字段”
我搜索了很多,但没有找到答案,对我来说这是一个很大的惊喜,以前没有人遇到这个问题,似乎没有人使用这个驱动程序,即使是“官方”驱动程序自PHP 5.3发布以来......
感谢。
答案 0 :(得分:10)
在初始CTP中,字段索引从1开始。之后它们被更改为从0开始。
尝试这样的事情:
// connection to the dbserver
$result = sqlsrv_query("INSERT INTO Table(columnName) VALUES ('text'); SELECT SCOPE_IDENTITY() AS ID");
echo "The last insert_id is".lastId($result);
function lastId($queryID) {
sqlsrv_next_result($queryID);
sqlsrv_fetch($queryID);
return sqlsrv_get_field($queryID, 0);
}