在事务中为两个表插入相同的键(1. primary 2. foreign)

时间:2014-09-10 18:52:53

标签: php mysql

我在这段代码中有2个查询。 (在我的真实代码中,我有6个查询,我需要交易)。

我不知道如何获取变量$category_id因为该类别尚未在数据库中推出(它应该同时插入 - 全部或全部)

代码:

try {
    $this->mysqli->begin_transaction();

    $this->mysqli->query("INSERT INTO `category` (`name`) VALUES ('$category')");
    $this->mysqli->query("INSERT INTO `subcategory` (`name`,`category_id` ) VALUES ('$subcategory','$category_id')");

    $this->mysqli->commit();

}
catch (Exception $e) {
    echo $e;
    $this->mysqli->rollBack();
}

mysql表:

    category:
    ---------
    |id|name|

    subcategory:
    |id|name|category_id|

所以我需要一些解决方案如何在查询之前知道$category_id的值是什么,或者如何修改查询以便提交数据库中的category_id。

1 个答案:

答案 0 :(得分:1)

LAST_INSERT_ID()就是你想要的。

try {
    $this->mysqli->begin_transaction();

    $this->mysqli->query("INSERT INTO `category` (`name`) VALUES ('$category')");
    $this->mysqli->query("INSERT INTO `subcategory` (`name`,`category_id` ) VALUES ('$subcategory', LAST_INSERT_ID())");

    $this->mysqli->commit();

}
catch (Exception $e) {
    echo $e;
    $this->mysqli->rollBack();
}

P.S。查看准备好的语句,而不是将变量连接到查询中。