Php sqlsrv_get_字段未返回ID

Php sqlsrv_get_字段未返回ID,php,sql,sql-server,sqlsrv,Php,Sql,Sql Server,Sqlsrv,我在尝试获取最后插入行的主键(VisitID)时遇到问题 无论何时运行查询,都会更新数据库,但sqlsrv_get_字段永远不会返回VisitID。我应该使用sqlsrv\u查询而不是sqlsrv\u prepare,还是我完全缺少什么 $addvisitquery = " INSERT INTO blah; SELECT SCOPE_IDENTITY() AS VisitID"; $addVisit = sqlsrv_prepare($connect,$add

我在尝试获取最后插入行的主键(VisitID)时遇到问题

无论何时运行查询,都会更新数据库,但sqlsrv_get_字段永远不会返回VisitID。我应该使用sqlsrv\u查询而不是sqlsrv\u prepare,还是我完全缺少什么

$addvisitquery = "
        INSERT INTO blah;
    SELECT SCOPE_IDENTITY() AS VisitID";

    $addVisit = sqlsrv_prepare($connect,$addvisitquery);

    if( sqlsrv_execute($addVisit))
        {
          echo "Statement executed.\n <br />";
          echo "Number of rows updated:".sqlsrv_rows_affected($addVisit)." <br />";
          sqlsrv_next_result($addVisit)." <br />";
          sqlsrv_fetch($addVisit);

          echo "Returned VisitID:".sqlsrv_get_field($addVisit, 0)." <br />";

          sqlsrv_commit($connect);
$addvisitquery=”
插入废话;
选择SCOPE_IDENTITY()作为VisitID”;
$addVisit=sqlsrv\u prepare($connect,$addvisitquery);
if(sqlsrv_执行($addVisit))
{
echo“已执行语句。\n
”; echo“更新的行数:”.sqlsrv_受影响的行数($addVisit)。“
”; sqlsrv_下一个结果($addVisit)。“
”; sqlsrv_fetch($addVisit); echo“Returned VisitID:”.sqlsrv_get_字段($addVisit,0)。“
”; sqlsrv_提交($connect);
我在这里找到了答案:

非常简单,请确保SQL语句具有以下内容以返回最后插入的行:

 ; SELECT SCOPE_IDENTITY()
创建一个php函数:

function lastInsertId($queryID) {
        sqlsrv_next_result($queryID);
        sqlsrv_fetch($queryID);
        return sqlsrv_get_field($queryID, 0);
    } 
然后将此行添加到查询函数:

echo "The last inserted row ID is ".lastInsertId($addVisit); 

与原始代码的相关区别是什么?乍一看,它们看起来非常相似:-?函数
sqlsrv\u next\u result($addVisit)
旁边的

的目的是什么?该行没有print或echo命令,因此,我猜它会阻止该函数成功执行。