如何执行以下插入,mysql

时间:2016-01-01 17:31:09

标签: php mysql

我有两个表,报告和事件,每个表都有一个名为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和其他可能的解决方案,但它们似乎都不适合我的问题。我不介意创建另一个列作为两个表的参考,但我不知道如何在上面的查询中执行此操作。

提前谢谢

1 个答案:

答案 0 :(得分:1)

上次插入ID为$this->conn->insert_id; 您可以在操作后获取它并使用标识符。 例如,将其添加到所需的表