php 使用 Scope_identity 返回 id

Posted

技术标签:

【中文标题】php 使用 Scope_identity 返回 id【英文标题】:php to return id using Scope_identity 【发布时间】:2015-09-05 14:43:06 【问题描述】:

搜索其他文章我得出的结论是,我需要使用 Scope_Identity() 来返回当我将一行插入我的 MS SQL 表时生成的主键的值。然而,对我来说不太清楚的是我需要返回该值的 php。作为一个相当新的人,到目前为止,我一直通过从我的前任那里借用代码来运行 sql 查询,但它们一直是我使用 while 循环从数组返回结果的情况。请告知正确的代码。

$query = "INSERT INTO mytable (Title,Author)
          VALUES('".sql_safe($Title)."', '"sql_safe($Author)."'); SELECT Scope_Identity() as myid;";

$result = odbc_exec($con1, $query);

直到现在我只需要使用

while($row = odbc_fetch_array($result)) 

但是引用该 myid 的正确方式是什么?

【问题讨论】:

你为什么使用 ODBC? 我说这对 sql 连接方法没有太多了解 - 我被告知我们的服务器与首选方法 SQLSRV 不兼容,直到我们得到一个新服务器,这是建议的连接方式。它也是我的前任使用的,我继承了代码。不幸的是,我的团队没有太多的 php/sql 经验,我不得不凑合着做。欢迎任何关于为什么这不是一个好主意和替代方案的建议。 【参考方案1】:

我为此苦苦挣扎了一段时间,最后我的解决方案涉及回到mssql_query driver

$query ="        INSERT INTO powerview.DL_documentlist (Title,Liveversion,Author,Location,Locked,LockedbyID)
                VALUES('".sql_safe($Title)."',1.0,'".sql_safe($Author)."','".sql_safe($Location)."','1',".$lockedbyID."); 
                SELECT SCOPE_IDENTITY() as id;
                RETURN;
             ";

    $result = mssql_query($query);      
    $result = mssql_fetch_object($result);

    $DocID = $result->id;  

【讨论】:

以上是关于php 使用 Scope_identity 返回 id的主要内容,如果未能解决你的问题,请参考以下文章

为啥 SCOPE_IDENTITY() 不返回我插入的 ID?

@@ROWCOUNT,@@IDENTITY, SCOPE_IDENTITY()

如果使用多个插入语句,有啥方法可以使用 SCOPE_IDENTITY 吗?

select SCOPE_IDENTITY()用法

SCOPE_IDENTITY()和 SELECT @@IDENTITY 的用法

SCOPE_IDENTITY的用法