PHP MySQL选择行的最大数量返回错误的数字

时间:2014-09-29 11:29:56

标签: php mysql sql max

我有一个包含表'客户'的数据库。在这一行中,大多数客户都有一个值或数字。我试图获得最高的数字,以便下一个注册的人将获得highest number + 1。行'usr' is varchar(255)

它正在使用以下代码:

$query = "SELECT MAX(usr) AS usr FROM customer";
$result = mysql_query($query);
$record = mysql_fetch_assoc($result);
$maxID   = $record['id'];
$nieuwID = $maxID + 1;

当我今天检查时,我看到两个最新的寄存器都有10号。当我检查我的查询时它返回9.为什么它返回9而不是10?我该如何解决这个问题,以便我的寄存器有一个唯一的编号?

4 个答案:

答案 0 :(得分:2)

usr应该是整数。改变表字段结构

答案 1 :(得分:0)

不要将数字存储为字符串。你得到一个字符串最大值。对于数字最大值,请将其转换为数字:

select max(usr + 0) as usr
from customer

但是,正如评论中所建议的那样,如果您想要一个自动递增字段,请使用auto_increment并将该列定义为真正的数字。

答案 2 :(得分:0)

您无法将MAX()varchar字段一起使用。如果你想使用MAX(),你必须将该字段转换为integer而不是varchar

任何需要加法,减法,平均值,最大值等的操作都不适用于varchar字段类型

答案 3 :(得分:0)

首先确定@DeDevelopers是正确的,应该强制auto_incroment来阻止这种情况发生。

我强烈建议你在插入或更新语句中使用它,即使重复的概率很低,也可能发生;)

我还建议您重新访问您的表架构以支持@DeDevelopers注释,但如果没有,则对该表列进行一些错误检查或唯一键标识符