PDO的事物处理(InnoDB)

同时添加两个表的数据

 

user

user_0,user_1,user_2   数据字段一样(这是为了数据多的时候分成几个表来存储)

设计表都用InnoDB(做事务处理时改为InnoDB)

要添加的数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="add.php" method="post">
<table>
    <tr>
        <td>用户名</td>
        <td><input type="text" name="name"></td>
    </tr>
    <tr>
        <td>密码</td>
        <td><input type="password" name="pwd"></td>
    </tr>
    <tr>
        <td>昵称</td>
        <td><input type="text" name="uname"></td>
    </tr>
    <tr>
        <td>手机号</td>
        <td><input type="text" name="phone"></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" value="添加"></td>
    </tr>
</table>
</form>
</body>
</html>
<?php
$pdo = new PDO('mysql:host=localhost;dbname=mouch7','root','root');
$name=$_POST['name'];
$pwd=$_POST['pwd'];
$uname=$_POST['uname'];
$phone=$_POST['phone'];
try {

    $pdo->beginTransaction(); // 开启一个事务
    $row = null;
    $row= $pdo->exec("insert into user VALUES (NULL,'$name','$pwd')"); // 执行第一个SQL
    if(!$row)
        throw new PDOException('第一次错误');// 如出现异常提示信息或执行动作
    $num=$pdo->lastInsertId();
    $var = $num%3;
    $list = 'user_'.$var;
    $sql="insert into $list VALUES (NULL,'$uname','$phone','$num')";
    $row1= $pdo->exec($sql); // 执行第二SQL
    if(!$row)
        throw new PDOException('第二次错误');
    $pdo->commit();
} catch (PDOException  $e){
    $pdo->rollback(); //执行失败,事务回滚
    exit($e->getMessage());
}
?>

猜你喜欢

转载自blog.csdn.net/baiyawen1/article/details/82499339
PDO