php pdo insert,平均时间更新到一个表插入查询到其他表

时间:2014-09-10 10:24:24

标签: php mysql sql pdo

这是表格

tbl_one
id---int
name-var


tbl_tow
id----int
name--var

这是如何插入php pdo,

public function insert() {  
        $stmt9 = $this->conn->prepare("INSERT into tbl_one (name) VALUES (:name)");
        $stmt9->bindParam(':name' ,$this->name);
        $stmt9->execute();
        if($stmt9){
            echo "Added";
        } else {
            echo "error";
        }
    }

这里idia是一次插入两个表,一次从两个表中删除。

这可能吗

注意:我不能使用触发器,因为我已经设置了其他情况,因此mysql不支持多次触发一次或动作。

问候

2 个答案:

答案 0 :(得分:1)

这不是你想要的吗?

public function insert() {  
    $stmt9 = $this->conn->prepare("INSERT into tbl_one (name) VALUES (:name)");
    $stmt9->bindParam(':name' ,$this->name);
    $stmt9->execute();

    $stmt10 = $this->conn->prepare("INSERT into tbl_one (name) VALUES (:name)");
    $stmt10->bindParam(':name' ,$this->name);
    $stmt10->execute();
    if($stmt9 && $stmt10){
        echo "Added";
    } else {
        echo "error";
    }
}

基本上,您将函数内部的查询加倍,因此您可以“手动”将路径插入到日志表中。对不起,如果我误解了你。

答案 1 :(得分:0)

我认为您正在寻找交易。

查询执行的所有更改只有在您提交事务时才会生效,如果出现问题,您可能只是进行回滚,根本不会发生任何事情。

如果您在多个表中插入并希望确保仅在所有查询都成功时进行更改,这将非常有用!

示例:

public function insert() {  

    //This will start a transaction and turn-off auto-commit of queries.
    $this->conn->beginTransaction(); 

    $stmt9 = $this->conn->prepare("INSERT into tbl_one (name) VALUES (:name)");
    $stmt9->bindParam(':name' ,$this->name);
    $stmt9->execute();

    $stmt10 = $this->conn->prepare("INSERT into tbl_two (name) VALUES (:name)");
    $stmt10->bindParam(':name' , $someOtherName);
    $stmt10->execute();

    if($stmt9 && $stmt10){
        $this->conn->commit(); //This will save your changes
    } else {
        $this->conn->rollBack(); //This will undo your changes       
    }
}

这很简单。