获取mysql中字段的最后一个值


Getting last value of a field in mysql

我试图在新注册期间获得字段的最后值。在向表中插入数据之前,我想根据最后一个注册用户的id号创建一个用户id号。要做到这一点,我使用这个:

//to reach the last value of userID field;
$sql = "SELECT userID FROM loto_users ORDER BY userID DESC LIMIT 1";        
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
   $value = $row['userID'];
   echo "$value";            //not resulting here
}
$userID = $value+1;

所以,userID变成1。

奇怪的是,我可以在另一个php文件中使用完全相同的代码并且工作得很好。

我想说,其余的代码工作得很好。没有问题的数据库连接或任何其他事情,你可以告诉我。

注意:当我在mysql接口中运行相同的查询行时,我可以得到我想要的值。我是说$sql

您的问题在这段代码中:

{
   $svalue = $row['userID'];
----^
   echo "$value";            //not resulting here
}
$userID = $value+1;

改为$value

但正确的答案是定义userID为自动递增。这样,数据库就可以为您完成工作。插入行之后,您可以这样做:

SELECT LAST_INSERT_ID()

我解决了这个问题。,

$sql = "SELECT userID FROM loto_users ORDER BY userID DESC LIMIT 1";    
$result = mysql_query($sql);
$user_info = $result->fetch_assoc();
$value = intval($user_info["userID"]);
$userID = $value+1;

谢谢大家。

如果你在mysql表中将userID字段标记为自动递增,

您不需要设置userID, db会为您增加userID。您可以使用mysql_insert_id()函数获得分配的userID。下面是一个来自php.net

的例子
mysql_query("INSERT INTO mytable (product) values ('kossu')");
printf("Last inserted record has id %d'n", mysql_insert_id());

这是另一个例子

mysql_query("INSERT INTO 'loto_users'('username',...) values('usernameValue',...)");
echo "New User id is ".mysql_insert_id();