我有以下表格和列
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= 10
,identity
也将= 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
怎么做,?
答案 0 :(得分:1)
您正在寻找:
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))";