将会话数据存储到 MySQL 表和last_insert_id函数


storing session data to mysql tables and last_insert_id function

当护士登录到患者系统时,有关她的详细信息存储在会话变量中 - 包括她的用户ID。我创建了一个注册脚本,以便当护士注册新患者时,她的 id 存储在用户表的超级列中。这样患者只能分配给她。

问题是当我运行插入语句时,值 0 存储在超级用户列中,而不是护士的用户 ID。如何解决这个问题?

我有一个配置文件表,

其中包含用户的配置文件,它链接到用户表。我使用第一个插入语句在用户表中创建记录。我希望第二条语句在配置文件表中创建一个记录,其中配置文件 ID 与新创建的user_id相同。我正在尝试使用 LAST_INSERT_ID() 函数,但它也存储 0 而不是最后一个 id。

这是我围绕相关特定部分的代码。如果格式不正确,我很抱歉。我使用的是屏幕阅读器,我不太容易访问此网站上的格式选项。

我已经将 $_post 的表单数据存储到下面使用的所有变量中。

$SuperUser = $_SESSION['SuperUser'];
//insert query for user table
$UserInsert = "insert into user
(User_id,
Username,
Password,
User_level,
SuperUser)
values(null,
'$Username',
'$Password',
'1',
'$SuperUser')";
//run query for inserting data for user table
mysql_query($UserInsert) or die("cannot insert into user");
//Select the last increment id from user table
$LastIdQuery = "Select LAST_INSERT_ID()";
$LastId = mysql_query($LastIdQuery) or die("Cannot select last id");
//insert query for profile table
$ProfileInsert = "insert into profile
(User_id,
FirstName,
LastName,
Dob,
NI_Number,
NHS_Number,
Address1,
Address2,
Town,
Postcode,
Email,
Contact_Number,
Comments)
values('$LastId',
'$FirstName',
'$LastName',
'$DobYear-$DobMonth-$DobDay',
'$NI_Number',
'$NHS_Number',
'$Address1',
'$Address2',
'$Town',
'$Postcode',
'$Email',
'$Contact_Number',
'$Comments')";
//insert into profile
mysql_query($ProfileInsert) or die("Unable to insert in profile");
mysql_close();

尝试执行$id = mysql_insert_id()而不是您正在执行的LAST_INSERT_ID函数。此外,如果您将 mysql 连接存储在变量中,将其传递给 mysql_insert_id() 可以使其更准确。例如,连接到数据库时:

$link = mysql_connect(......);

然后以后:

mysql_query($ProfileInsert) or die("Unable to insert in profile");
$id = mysql_insert_id( $link );
mysql_close( $link );