我有两个表,报告和事件,每个表都有一个名为id且带有自动增量的唯一标识符,问题是每个表中的id不一样,因为报告可以有事件但可能没有。我想做一个双插入,但每个表中的一列必须有一个唯一的键。我使用以下函数执行此操作:
function addactioneventuser(){
try {
$this->conn->beginTransaction();
$query = "INSERT INTO
" . $this->table_name . "
SET
case_id = ?,
from_to = 0,
action_id = ?,
accepted = 0,
message = ?";
// prepare query statement
$stmt = $this->conn->prepare($query);
// bind values
$stmt->bindParam(1, $this->case_id);
$stmt->bindParam(2, $this->action_id);
$stmt->bindParam(3, $this->message);
// execute the query
$stmt->execute();
// insert event query
$query2 = "INSERT INTO event_case
SET
title = ?, body = ?, class = ?, start = ?, end = ?, case_id= ?, worker_id = ?";
// prepare query statement
$stmt = $this->conn->prepare($query2);
// bind values
$stmt->bindParam(1, $this->title);
$stmt->bindParam(2, $this->body);
$stmt->bindParam(3, $this->class_event);
$stmt->bindParam(4, $this->start);
$stmt->bindParam(5, $this->end);
$stmt->bindParam(6, $this->case_id);
$stmt->bindParam(7, $this->worker_id);
// execute the query
$stmt->execute();
$this->conn->commit();
return true;
} catch (Exception $e) {
$stmt->rollBack();
return false;
}
}
这两个插件工作得很好,但我的问题是每个表的两个ID不一样,因此我不能同时删除两个表中的特定记录而且我不知道如何去做吧。我读到了Cascade和其他可能的解决方案,但它们似乎都不适合我的问题。我不介意创建另一个列作为两个表的参考,但我不知道如何在上面的查询中执行此操作。
提前谢谢
答案 0 :(得分:1)
上次插入ID为$this->conn->insert_id;
您可以在操作后获取它并使用标识符。
例如,将其添加到所需的表