【问题标题】:Get ID of Last Entery in MSSQL Server via PHP通过 PHP 获取 MYSQL Server 中最后一个条目的 ID
【发布时间】:2020-09-16 08:53:40
【问题描述】:

您好,我需要一点帮助。

我有一个 MSSQL Server,我需要 Last Entery 的 ID。

我的 PHP 代码是:

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

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

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

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

【问题讨论】:

  • sqlsrv_query( $conn, $sqlnextid ) 并没有按照你的想法去做。您正在获得一个查询结果,您需要对其进行迭代以获取每一行,有关更多示例,请参阅sqlsrv_fetch_array

标签: php sql-server odbc sqlsrv


【解决方案1】:

您需要从已执行的查询 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;
...

?>

【讨论】:

  • 谢谢 :) 我没有看 ms 文档,这很好。
【解决方案2】:

sqlsrv_queryreturns 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;

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多