最后插入的id值存储到同一个表的另一个特定列

时间:2014-01-06 11:31:08

标签: php mysql sql database

我有以下表格和列

Table Name = users
column = user_id, name, email, password, status, identity

我正在使用以下查询将数据插入表users

$name             =    mysql_real_escape_string($_POST['name']);
$email           =    mysql_real_escape_string($_POST['name']);
$password        =    mysql_real_escape_string($_POST['txtPassword']);
$password        =    md5($password);  //===Encrypt Password

if(isset($_POST['btnRegister'])) //===When I will Set the Button to 1 or Press Button to register

{
$query    =    "insert into users(name,email,pasword,status,identity)values('$name','$email','$password','1','0')";

$res    =    mysql_query($query);
header('location:success_register.php');//Redirect To Success Page
}

我要问的是,我希望将最后一个ID存储到列identity

例如:如果上次user_id= 10identity也将= 10。我的意思是获取最后一个ID,然后将该ID存储到identity

结果将如下所示

user_id     name        email          password    status    identity
5           aa          aaa@ab.com     ****        1         5
6           bbb         bbb@ac.com     ****        1         6

怎么做,?

6 个答案:

答案 0 :(得分:1)

您正在寻找:

  

mysql_insert_id()

mysqli_insert_id(mysqli $link)//for mysqli
PDO::lastInsertId()//for PDO

其他方法: 如果您的id列是自动递增而不是随机的,那么您可以从users表中选择最大ID(每次在插入查询之后)并将其插入到您想要的任何列中。

$id=mysql_result(mysql_query(select max(user_id)
from users),0);

不要使用mysql _ ,因为它们已被删除。*

答案 1 :(得分:1)

保存上次插入ID:

$id = mysql_insert_id();

并在下一个插入中使用

答案 2 :(得分:1)

MYSQL中,当您认为last_insert_id()不起作用时,您可以找到它。您可能需要对SELECT及其表格拥有INFORMATION_SCHEMA权限。

如果您具有该权限,请尝试以下查询。

$query = "insert into users( name, email, pasword, status, identity )"
         . " values( '$name', '$email', '$password', '1',"
         . " ( SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES"
         . "   WHERE TABLE_NAME='users' and TABLE_SCHEMA=DATABASE() )"
         . " )";

最后,建议停止使用已弃用的API。

答案 3 :(得分:0)

这是你要找的东西。 Select max(user_id)+1并将其存储在变量中。 现在,您需要在user_id和identity参数中传递此变量。

请注意,即使user_id是自动增量,它也允许您插入具有指定user_id的新行

答案 4 :(得分:0)

我认为你也可以这样说

$lastID = MySQLI_insert_id($DBcon); //where Dbcon is your connection to your database 

然后

$query    =  "insert into users(name,email,pasword,status,identity)values('$name','$email','$password','1','$lastID')";

$res    =  mysql_query($query);

答案 5 :(得分:-1)

我认为你需要在插入后插入表中的行数: 它可能对你有用

$query    =    "insert into users(name,email,pasword,status,identity)values('$name','$email','$password','1','0',(select COUNT(*)+1 FROM users))";