下面我有一个使用php和mysqli的INSERT数据库函数:
for ($i = 1, $n = $_SESSION['sessionNum']; $i <= $n; $i++) {
$insertsql = "
INSERT INTO Session
(SessionName, SessionTime, SessionDate, SessionWeight, SessionDuration, TotalMarks, ModuleId, TeacherId, Room)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)
";
if (!$insert = $mysqli->prepare($insertsql)) {
// Handle errors with prepare operation here
}
$sessname = $_SESSION['id'] . ($n == 1 ? '' : $i);
$sessdate = date("Y-m-d", strtotime($_SESSION['dateChosen']));
$insert->bind_param("sssisiiis", $sessname, $_SESSION['timeChosen'], $sessdate,
$_SESSION['totalWeight'], $time, $_SESSION['textMarks'],
$_SESSION['hiddenmodule'], $teacherid, $_SESSION['rooms']);
$insert->execute();
if ($insert->errno) {
// Handle query error here
}
$insert->close();
}
以上代码将在下面的数据库中插入此数据作为示例:
SessionId (Auto) SessionName SessionTime //etc
1 ADFGR1 01:00:00
2 ADFGR2 13:00:00
3 ADFGR2 09:00:00
无论如何,您可以看到我在上面的代码中没有包含SessionId
,因为它是一个自动增量,这意味着无论如何都会显示它。
但我遇到的问题是在这个插入下面,我想要做的是当上面的插入完成后,我想在下面做另一个插入:
$insertsession = "
INSERT INTO Session_Complete
(SessionId)
VALUES
(?)
";
if (!insertdb = $mysqli->prepare($insertsession)) {
// Handle errors with prepare operation here
}
insertdb->bind_param("i",$value);
insertdb->execute();
if (insertdb->errno) {
// Handle query error here
}
但是我对上面插入的问题是它需要第一个插入中已经插入的SessionId
才能将这些id插入到它的表中。我的问题是如何从第一个插入中检索SessionId
,以便将它们包含在第二个插入中?
答案 0 :(得分:2)
如果您愿意,可以在此使用TRIGGER
,例如
delimiter $$
CREATE TRIGGER `trigger_Name`
AFTER INSERT ON `Session`
FOR EACH ROW
BEGIN
INSERT INTO Session_Complete (SessionId) values (LAST_INSERT_ID());
END$$
delimiter ;
触发器的作用是在表Session
上成功插入后,它还会在表Session_Complete
上插入最后插入的ID。
答案 1 :(得分:1)
在Session
插入后,请查看How do I get the last inserted ID of a MySQL table in PHP?以获取最后一个插入ID,并将以下插入的值用于Session_Complete
。
答案 2 :(得分:0)
使用MySQL函数LAST_INSERT_ID()。
LAST_INSERT_ID()(不带参数)返回一个BIGINT(64位)值,表示由于最近执行的INSERT语句而成功为AUTO_INCREMENT列插入的第一个自动生成的值。
答案 3 :(得分:0)
它应该是这样的:
$insert->insert_id;
答案 4 :(得分:0)
与其他问题中的其他表格一样,Session_Complete
看起来像另一张过分不必要的表格
无论您想从此表中获得什么信息,都可以从Session
获得
所以,根本没有插入。
您似乎需要修改数据库结构,或者 - 更好 - 将其作为单独的问题发布在此处,并就如何正确组织它提供良好的建议。