我的数据库中有一个'用户'表,当有人创建我想要的新帐户时,而不是为id执行自动增量,获取插入的最后一个id的值,向其中添加1,然后插入它与其余的创建用户数据。我现有的代码是:
<?php
mysql_connect("localhost","username","password");
mysql_select_db("db");
$fname = $_POST['fname'];
// ... get all the other info from create user form
$query = "INSERT INTO Users ('fname','lname','email','username','password')
VALUES
('$fname','$lname','$email','$username','password')"
我想要做的是从表中最后一个用户(行)的Users表中获取'id',然后向其中添加1,并将代码设为:
$query = "INSERT INTO Users ('id','fname','lname','email','username','password')
VALUES
('$id','$fname','$lname','$email','$username','$password')";
我将如何做到这一点?
编辑:谢谢大家关心我,让我想起SQL注入。我提供的代码是我正在做的最简单的例子。我不想把所有这些都放在我的例子中。但无论如何,谢谢答案 0 :(得分:3)
mysql_insert_id()
mysql_query("INSERT QUERY ...");
$id = mysql_insert_id();
改用mysqli(或PDO)。
$mysqli->query($query);
$id = $mysqli->insert_id
printf ("New Record has id %d.\n", $id);
正确逃脱!因为您很容易受到SQL注入。
增量:$lastid = $lastid + 1;
或$id++
。
自动增量是有原因的。使用它。
答案 1 :(得分:0)
您可以使用mysql_insert_id();
功能:
$query = "INSERT INTO Users ('fname','lname','email','username','password')
VALUES
('$fname','$lname','$email','$username','password')"
$lastid=mysql_insert_id(); /* GET THE ID OF THE INSERT QUERY */
$lastid++; /* INCREMENT THE ID */
您未来的一些提示: 使用mysqli prepared statement代替mysql。阅读有关SQL注入的更多信息here。