Microsoft's SQLSRV为PHP驱动程序查询“SELECT SCOPE_IDENTITY()为ID”

问题描述:

此查询工作正常使用php_mssql驱动程序时不返回任何结果身份。 我会执行该查询,并获取表中的最后一个ID。Microsoft's SQLSRV为PHP驱动程序查询“SELECT SCOPE_IDENTITY()为ID”

如果使用Microsoft的php_sqlsrv驱动程序执行查询,则相同的代码不起作用。

我不执行查询(sqlsrv_query功能)时得到任何错误,但调用sqlsrv_fetch_array当我得到以下错误: “用于查询的活动结果中没有任何字段”

从来就一派很多,并没有找到答案,这对我来说是一个很大的惊喜,以前没有人遇到过这个问题,似乎没有人使用这个驱动程序,即使它是自PHP 5.3发布以来的“官方”驱动程序......

谢谢。

在最初的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); 
} 
+2

此代码给我的线索,找出what'正在发生。 INSERT_QUERY返回1个结果,SELECT SCOPE_IDENTITY返回另一个结果。如果您正指向第一个结果,那么如果尝试访存数组(即插入查询不会返回任何内容),则会出现错误,因此必须使下一个结果可用(sqlsrv_next_result),然后才能调用sqlsrv_fetch_array。注意如果你是从php_mssql迁移到php_sqlsrv,因为这种行为是不同的,并且可能导致错误。 – molerus 2010-12-02 15:39:07