我试图在新注册期间获取字段的最后一个值。 在将数据插入表之前,我想根据最后注册用户的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
行。
答案 0 :(得分:4)
您的问题出在以下代码中:
{
$svalue = $row['userID'];
----^
echo "$value"; //not resulting here
}
$userID = $value+1;
更改为$value
。
但正确的答案是将userID
定义为自动递增。这样,数据库就能为您完成工作。插入行后,您可以执行以下操作:
SELECT LAST_INSERT_ID()
获取最后一个值。
答案 1 :(得分:0)
我解决了这个问题。这里;
$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;
谢谢大家。
答案 2 :(得分:0)
如果在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();