您的位置:首页 > 编程语言 > PHP开发

PHP学习 pdo的插入操作和事务操作

2014-03-12 22:53 281 查看
<?php

    try{

        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456");

        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_WARNING);

    }catch(PDOException $e){

        echo "数据库连接失败:".$e->getMessage();

        exit;

    }

    //执行SQL语句 exec() query()  prepare()

    //一是有结果集的query(), 执行select语句

    //exec()用来执行有影响行数的,update, delete insert, other

    //exec()返回的是影响的行数

    $affected_rows=$pdo->exec("insert into shops(name1, price, num, desn) values('aa', '12.1', '10', 'good')");

    //设置错误报告模式 ERRMODE_SILENT    ERRMODE_WARNING

    print_r($pdo->errorInfo());

====================================

<?php

    try{

        $pdo=new PDO("mysql:host=localhost;dbname=xsphpdb", "root", "123456", array(PDO::ATTR_AUTOCOMMIT=>0));

        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);

    }catch(PDOException $e){

        echo "数据库连接失败:".$e->getMessage();

        exit;

    }

    //执行SQL语句 exec() query()  prepare()

    //一是有结果集的query(), 执行select语句

    //exec()用来执行有影响行数的,update, delete insert, other

    //exec()返回的是影响的行数

    /*

     *

     * 事务处理

     *

     *   张三从李四那里买了一台 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: