php - MYSQL & PHP 将 LAST_INSERT_ID() 保存为局部变量

标签 php mysql

我在将数据从 PHP 表单存储到数据库时遇到了一些问题。该表单调用了一个名为 insert 的文件,我在下面复制了该文件。基本上,我需要将详细信息存储到表 scout 中,并将 last_insert_id() 保存为局部变量,以便在将项目插入表 emergencyContact 时使用。然后emergencycontacts last_insert_id()需要保存,然后存入scout表。但是目前它不起作用。我认为我还没有正确存储/使用变量。

<?php
$con = mysql_connect("localhost","user","password");
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("lex", $con);

mysql_query("INSERT INTO Scout (Unit_id, FirstName, SurName, DOB, Address, Telephone, School, Religion, Ethenic, Child_Doc, Doc_Phone, Allergies, Active)
VALUES ('$_POST[unitid]','$_POST[firstname]','$_POST[lastname]','$_POST[dob]','$_POST[address]','$_POST[phone]','$_POST[school]','$_POST[religion]','$_POST[ethnicidentity]','$_POST[doctorsname]','$_POST[doctorsnumber]','$_POST[health]','$_POST[radio]')");

mysql_query("SET @scout_id = LAST_INSERT_ID()");

mysql_query("INSERT INTO EmergencyContact (Scout_id, Name, Tel, Address) 
VALUES(@scout_id,'$_POST[emergencycontact]','$_POST[emergencyphone]',$_POST[emergencyaddress]')");

mysql_query("SET @emergency_id = LAST_INSERT_ID()");

mysql_close($con);
?>

最佳答案

使用 mysql_insert_id()

$idInsertLast = mysql_insert_id();

结果是从该连接/用户插入的最后一个 AUTOINCREMENT id。如果你有 200 个不同的用户大约同时进行插入事务,每个人都会收到他/她的最后一个 ID,而不是其他任何人的,即使在用户 A 插入记录和他/她调用 mysql_insert_id()、userB 和 userC 的时间之间也是如此插入了自己的记录。

注意不要在用户之间共享连接,只要每个用户打开他/她自己的数据库连接,一切都会好起来的。

注意:mysql_query 和库的其余部分已被弃用,最终将从 future 的 php 版本中删除。

关于php - MYSQL & PHP 将 LAST_INSERT_ID() 保存为局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15055531/

相关文章:

php - IE6位置固定问题

php - 如何在没有 SSH 的情况下按需将实时 MySQL 数据库下载到本地测试数据库?

mysql - Django:检索不同的查询集

MySQL:将两个没有公共(public)ID的表合并在一起

mysql - 在模型中玩 2.0 MySql 关键字

mysql批量上传-使用另一个表中生成的主键值

php - 在 joomla 中上传后将文件路径保存到数据库中

php - 如何覆盖 html 元素但保留 block 的其余部分?

php - 由于 PHP-FPM 监听队列,站点无法访问,CPU 达到 100%

PHP多维数组处理