通过PHP获取MSSQL Server中最后输入的ID

问题描述

你好,我需要一点帮助。

我有一个MSsql Server,我需要最后输入的ID。

我的PHP代码是:

$conn = sqlsrv_connect( $serverName,$connectionInfo);

$sqlnextid = "Select IDENT_CURRENT('dbo.Person')";
echo $sqlnextid;
$nextid = sqlsrv_query( $conn,$sqlnextid );
echo $nextid;

不幸的是,在sql Management Studio中,$nextid仅返回"Resource id#3"而不返回正确的IDSQL查询"Select IDENT_CURRENT('dbo.Person')"可以正常工作并给出正确的答案-(33)。

sqlquery in sql studio

我的错误在哪里?在此先感谢:)

解决方法

您需要从执行的查询uisng sqlsrv_fetch_array()中获取数据。如文档中所述,函数sqlsrv_query() returns是语句资源,如果无法创建和/或执行语句,则为false

作为旁注,请始终检查sqlsrv_connect()sqlsrv_query()调用的结果。

<?php

...
// Connection
$conn = sqlsrv_connect( $serverName,$connectionInfo);
if( $conn === false ) {
    echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(),true);
    exit;
}

// Query
$sqlnextid = "SELECT IDENT_CURRENT('dbo.Person') AS [CurrentIdent]";
$stmt = sqlsrv_query( $conn,$sqlnextid );
if( $stmt === false ) {
    echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(),true);
    exit;
}

// Data
$ident = 0;
while ($row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC)) {
    $ident = $row["CurrentIdent"];
}
echo $ident;
...

?>
,

sqlsrv_query returns returns a statement resource on success and FALSE if an error occurred

您可以使用sqlsrv_fetch_object访问结果。

$sqlnextid = "SELECT IDENT_CURRENT('dbo.Person') AS LastId"
$result = sqlsrv_query($conn,$sqlnextid);
$row = sqlsrv_fetch_object($result)
echo $row->LastId;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...