【问题标题】:sqlsrv_get_field not returning IDsqlsrv_get_field 不返回 ID
【发布时间】:2014-07-11 08:06:13
【问题描述】:

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

每当运行查询时,数据库都会更新,但 sqlsrv_get_field 永远不会返回 VisitID。我应该使用 sqlsrv_query 而不是 sqlsrv_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);

【问题讨论】:

  • 函数sqlsrv_next_result($addVisit)旁边的&lt;br /&gt;的作用是什么?该行没有打印或回显命令,所以我猜它会阻止该函数成功执行。

标签: php sql sql-server sqlsrv


【解决方案1】:

我在这里找到了答案:http://blogs.msdn.com/b/nickhodge/archive/2008/09/23/sql-server-driver-for-php-last-inserted-row-id.aspx

很简单,确保您的 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); 

【讨论】:

  • 与您的原始代码有什么相关区别?乍一看,它们看起来很相似:-?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2016-12-13
  • 2017-06-20
  • 2018-07-13
  • 1970-01-01
  • 2021-05-30
  • 2017-09-13
相关资源
最近更新 更多