从表中获取最后一个 ID 号

Posted

技术标签:

【中文标题】从表中获取最后一个 ID 号【英文标题】:Get last ID number from table 【发布时间】:2019-06-20 08:59:09 【问题描述】:

我试过了:

<?php 
$query = "SELECT MAX(ID) FROM Table"; 
$result=sqlsrv_query($conn, $query);
$values = sqlsrv_fetch_array($result);
var_dump($values);
echo $values;
?>

但我在我的网页上得到了这个:

C:\wamp64\www\site\site.php:18:

array (size=2)
  0 => int 1
  '' => int 1

我错过了什么吗?

【问题讨论】:

ID 列中有行吗 您的ID 列是IDENTITY 吗?确定您正在寻找SCOPE_IDENTITY() 是的,你错过了 sqlsrv_fetch_array 的行为在手册中记录,所以你可以去阅读它的作用。 php.net/manual/en/function.sqlsrv-fetch-array.php 第二个参数$fetchType 的默认值为SQLSRV_FETCH_BOTH - 这意味着您将在数字键 和关联键下获取每个值。 (这里的关联键是一个空字符串,因为您要获取的伪“列”没有别名。)因此请指定SQLSRV_FETCH_ASSOCSQLSRV_FETCH_NUMERIC,具体取决于您实际想要的。 【参考方案1】:

$values 是一个数组,因此如果要回显它,则需要访问直接值。最大 ID 为 1,如您的 var_dump() 所示 - 但您从数组 $values 中获得两个结果,一个是关联的,一个是数字索引的。如果您从查询中为数据设置别名,则可以按该别名的名称获取关联值。

<?php 
$query = "SELECT MAX(ID) as maxID FROM Table"; 
$result=sqlsrv_query($conn, $query);
$values = sqlsrv_fetch_array($result);
echo $values['maxID'];

或者如果你想以数字方式访问它,

<?php 
$query = "SELECT MAX(ID) FROM Table"; 
$result=sqlsrv_query($conn, $query);
$values = sqlsrv_fetch_array($result);
echo $values[0];

【讨论】:

我不会使用MAX(),因为它可能会返回错误的ID 我将问题解读为“为什么我会得到我得到的结果”,并且有点错过了上面大写字母中的标题。没错,SCOPE_IDENTITY() 会返回正确的结果,但是没有函数可以直接从 PHP sqlsrv_ 函数返回该结果(反正我不知道)。

以上是关于从表中获取最后一个 ID 号的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 - 从表中获取最后一个 id

从表中获取最后 200 条记录 [关闭]

Symfony 2 - 从表中获取最后插入的行

从表中检索最后 N 条记录

MySQL 从表中获取数据并检查表行中是不是存在用户 ID

获取最后一个插入 id sqlsrv