如何从MySQL数据库表中获取最后插入的id?

时间:2015-01-22 03:25:14

标签: php mysql

我的数据库中有一个'用户'表,当有人创建我想要的新帐户时,而不是为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注入。我提供的代码是我正在做的最简单的例子。我不想把所有这些都放在我的例子中。但无论如何,谢谢

2 个答案:

答案 0 :(得分:3)

  1. mysql_insert_id()

    mysql_query("INSERT QUERY ...");
    $id = mysql_insert_id();
    
  2. 改用mysqli(或PDO)。

    $mysqli->query($query);
    $id = $mysqli->insert_id
    printf ("New Record has id %d.\n", $id);
    
  3. 正确逃脱!因为您很容易受到SQL注入。

  4. 增量:$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