Php 获取数据库表中某列的最大值

Php 获取数据库表中某列的最大值,php,mysql,sql,Php,Mysql,Sql,我试图获取数据库表中某列的最大值 这是我的PHP: $st = mysql_fetch_assoc(mysql_query("SELECT max(`version`) FROM `remembers` WHERE id='$id'")); $version = $st['version'] + 1; 因此,应该获取当前版本的id,然后对其进行更新,但添加1。但是$st['version']似乎正在返回0当数据库中当前最高值为1 我做错了吗?有没有更好的方法来存档 您必须在SQL中为MAX()

我试图获取数据库表中某列的最大值

这是我的PHP:

$st = mysql_fetch_assoc(mysql_query("SELECT max(`version`) FROM `remembers` WHERE id='$id'"));
$version = $st['version'] + 1;
因此,应该获取当前版本的
id
,然后对其进行更新,但添加1。但是
$st['version']
似乎正在返回
0
当数据库中当前最高值为
1


我做错了吗?有没有更好的方法来存档

您必须在SQL中为
MAX()
选择别名,以便在PHP中引用它:

SELECT max(`version`) AS version FROM ...
另外,
mysql\u fetch\u assoc
返回一个数组数组,因此不能直接引用
$st['version']
。相反,您可以将PHP更改为:

$st = mysql_fetch_row(mysql_query("SELECT max(`version`) AS version FROM `remembers` WHERE id='$id'"));
$version = $st[0] + 1;

SQL有一个函数调用max(),您正在正确的上下文中使用它。 你差一点就做好了

您只需要使用AS关键字


中选择max(
version
)作为max\u version,其中id='$id'

可以显示表结构吗?id通常表示主键,因此只有一个版本。。对吗?在本例中,Id只是一个由随机字母和数字组成的7个字符的字符串。它的2012和mysql_query想退役。请不要在新代码中使用这些方法,因为它们已被弃用,可能会被删除。切换到
mysqli
或PDO是一项时间上的小投资,它将为您节省大量的痛苦、痛苦和/或由PDO引起的尴尬。在你的例子中,你显然在祈祷
$id
可以毫无伤害地进行评估,基于信仰的编程从来都不是一个好主意。即使在添加AS关键字时也是如此。现在,
$st['version']
正在返回nothing@Shawn31313试着在phpMyAdmin中运行原始查询,看看它返回了什么。嗯,它确实得到了该列的最大值,所以我不明白为什么提取不起作用:/@Shawn31313这也是因为
mysql\u fetch\u assoc
返回了一个数组,所以不能只引用
$st['version']
直接。查看我的更新解决方案。我发现了问题,它不允许我添加mysql\u查询,除非它在变量中。这很奇怪。