Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO和事务,但我没有得到错误,所以回滚无法工作。_Php_Mysql_Pdo_Transactions_Rollback - Fatal编程技术网

Php 使用PDO和事务,但我没有得到错误,所以回滚无法工作。

Php 使用PDO和事务,但我没有得到错误,所以回滚无法工作。,php,mysql,pdo,transactions,rollback,Php,Mysql,Pdo,Transactions,Rollback,我试图用php创建一个简单的类 <?php class DB{ private $db_host = "localhost"; private $db_usr = "root"; private $db_pass = ""; private $db_name = "webbshop"; private $db; function __construct(){ $this->db = new PDO('mysql:host=' . $this->db_host . '

我试图用php创建一个简单的类

<?php
class DB{

private $db_host = "localhost";
private $db_usr = "root";
private $db_pass = "";
private $db_name = "webbshop";
private $db;

function __construct(){
    $this->db = new PDO('mysql:host=' . $this->db_host . ';' 
        .'dbname=' . $this->db_name, $this->db_usr, $this->db_pass);
}

function Trans(){
    $this->db->beginTransaction();
}

function query($sql){
    $stmt = $this->db->prepare($sql);
    $stmt->execute();
    return $stmt->fetchAll();
}

function lastInsertID() {
    return $this->db->lastInsertId();
}

function commitTrans(){
    $this->db->commit();
}

function rollback() {
    $this->db->rollBack();
}

function __destruct() {
    $this->db = null;
}
}

确保PDO错误模式设置为:PDO::ERRMODE\u EXCEPTION。否则,您需要在每次查询后检查错误状态

查看更多详细信息

<?php
require 'db_con.php';

$db = new DB();
$db->Trans();
$nick = "INSERT INTO `webbshop`.`user` (`userID`, `nick`, `pass`) VALUES (NULL, '$_POST[nick]', '$_POST[pass]')";

try {
    $db->query($nick);
    $nickID = $db->lastInsertID();
    echo $nickID;

    $pers = "INSERT INTO `webshop`.`person` (`personID`, `userID`, `fname`, `lname`, `persnr`, `email`) VALUES (NULL, $nickID, '$_POST[firstname]', '$_POST[lastname]', '$_POST[personnr]','$_POST[email]')";
    $addr = "INSERT INTO `webshop`.`address` (`addressID`, `userID`, `street`, `city`, `zip`) VALUES (NULL, $nickID, '$_POST[address]', '$_POST[city]', '$_POST[zip]')";

    $db->query("INSERT INTO `wshop`.`persn` (`personID`, `userID`, `fname`, `lname`, `persnr`, `email`) VALUES (NULL, $nickID, '$_POST[firstname]', '$_POST[lastname]', '$_POST[personnr]','$_POST[email]')");
    $db->query($addr);

} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "</br>";
    $db->rollback();
}
$db->commitTrans();