Mysql transaction processing application example of pdo under php_PHP tutorial

WBOY
Release: 2016-07-13 17:06:43
Original
743 people have browsed it

This article will introduce to you the application examples of mysql transaction processing of pdo under php. Friends who need to know more can refer to it.


Several steps of php+mysql transaction processing:
1. Turn off automatic submission
2. Start transaction processing
3. If there is an exception, it will automatically throw an exception prompt and then roll back
4. Turn on automatic submission

Note: MySQL only supports transaction processing with this InnoDB driver, and the default MyIsAM driver does not support it.
The following is the example code:

The code is as follows
 代码如下 复制代码

try{
$pdo=new pdo("mysql:host=localhost;dbname=mydb", "root", "root", array(PDO::ATTR_AUTOCOMMIT=>0));//最后是关闭自动提交
        //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//这个是通过设置属性方法进行关闭自动提交和上面的功能一样
        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);//开启异常处理
    }catch(PDOException $e){
        echo "数据库连接失败:".$e->getMessage();
        exit;
    }
    /*
     * 事务处理
     *
     *   张三从李四那里买了一台 2000 元的电脑
     *     从张三帐号中扣出 2000元
     *     向李四账号中加入 2000元
     *     从商品表中减少一台电脑
     *     MyIsAM  InnoDB
     */
    try{
        $pdo->beginTransaction();//开启事务处理      
        $price=500;
        $sql="update zhanghao set price=price-{$price} where id=1";
        $affected_rows=$pdo->exec($sql);
        if(!$affected_rows)
            throw new PDOException("张三转出失败");//那个错误抛出异常
        $sql="update zhanghao set price=price+{$price} where id=3";
        $affected_rows=$pdo->exec($sql);     
        if(!$affected_rows)
            throw new PDOException("向李四转入失败");
        echo "交易成功!";
        $pdo->commit();//交易成功就提交
    }catch(PDOException $e){
        echo $e->getMessage();
        $pdo->rollback();
    } 
    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//自动提交,如果最后不自动提交,转账是不成功的 
    //设置错误报告模式 ERRMODE_SILENT    ERRMODE_WARNING

Copy code
Try{

           $pdo=new pdo("mysql:host=localhost;dbname=mydb", "root", "root", array(PDO::ATTR_AUTOCOMMIT=>0));//Finally, turn off automatic submission

//$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0); //This is to turn off automatic submission by setting the attribute method. The function is the same as above }catch(PDOException $e){ echo "Database connection failed:".$e->getMessage(); exit; } /* * Transaction processing * * * Zhang San bought a 2,000 yuan computer from Li Si * * Deduct 2,000 yuan from Zhang San’s account * * Add 2,000 yuan to Li Si’s account * * Remove one computer from the product list
* * MyIsAM InnoDB */ Try{
           $pdo->beginTransaction();//Start transaction processing                                                                                                $price=500;
           $sql="update zhanghao set price=price-{$price} where id=1";           $affected_rows=$pdo->exec($sql);           if(!$affected_rows)                 throw new PDOException("Zhang San's transfer failed");//That error throws an exception           $sql="update zhanghao set price=price+{$price} where id=3";           $affected_rows=$pdo->exec($sql);                                                                 if(!$affected_rows)                  throw new PDOException("Transfer to Li Si failed"); echo "Transaction successful!"; $pdo->commit();//Submit if the transaction is successful }catch(PDOException $e){ echo $e->getMessage();            $pdo->rollback(); }   $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//Automatic submission, if it is not automatically submitted in the end, the transfer will be unsuccessful //Set error reporting mode ERRMODE_SILENT ERRMODE_WARNING http://www.bkjia.com/PHPjc/630684.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/630684.htmlTechArticleThis article will introduce to you students about mysql transaction processing application examples of pdo under php. Friends who need to know more can refer to. Several steps for php+mysql transaction processing: 1. Turn off automatic submission 2. Turn on...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!