从表中获取最后一个 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_ASSOC
或SQLSRV_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 号的主要内容,如果未能解决你的问题,请参考以下文章