我在从PHP表单将数据存储到数据库中时遇到了一些问题。表单调用一个名为insert的文件,我已将其复制到下面。基本上,我需要将详细信息存储到表scout中,并将最后一个_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();

结果是从此连接/用户插入的最后一个自动增量id。如果同时有200个不同的用户执行insert事务,则每个用户都将收到他/她的最后一个id,而不是其他用户的,即使在用户a插入记录和他/她调用mysql_insert_id()之间,用户b和用户c已经插入了他们自己的记录。
注意不要在用户之间共享连接,只要每个用户打开他/她自己的数据库连接,一切都会好起来的。
注意:mysql_query和其他库已经被弃用,最终将从未来的php版本中删除。

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

10-10 01:23
查看更多