我试图在新注册期间获得字段的最后值。在向表中插入数据之前,我想根据最后一个注册用户的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 %dn", mysql_insert_id());
这是另一个例子
mysql_query("INSERT INTO 'loto_users'('username',...) values('usernameValue',...)");
echo "New User id is ".mysql_insert_id();