注册 登录

清河洛

mysqli面向对象的使用②

qingheluo2016-12-16清河洛324
三、执行多条 SQL 语句有的时候需要同时执行多条SQL语句可以分别创建多个结果集然后使用,但这样资源消耗很大,也不利于管理PHP提供了执行多条SQL语句的方法multi_query()// 创建多条 SQL 语句 $_sql .= "SELECT * FROM tg_user;" ; $_sql .= "SELECT * FROM tg_photo;" ; $_sql .= "SELECT * FROM tg_article" ; // 开始执行多条 SQL 语句 if ( $_mysqli ->multi_quer...

三、执行多条 SQL 语句

有的时候需要同时执行多条SQL语句

可以分别创建多个结果集然后使用,但这样资源消耗很大,也不利于管理

PHP提供了执行多条SQL语句的方法multi_query()

// 创建多条 SQL 语句
$_sql .= "SELECT * FROM tg_user;" ;
$_sql .= "SELECT * FROM tg_photo;" ;
$_sql .= "SELECT * FROM tg_article" ;

// 开始执行多条 SQL 语句

if ( $_mysqli ->multi_query($_sql)) {
        //只能判断第一条sql语句是否正确
    $_result = $_mysqli ->store_result();
        // 获取当前结果集指针所在位置的SQL语句执行的结果集
        // 每个sql语句为一行

    $_mysqli ->next_result();
        将结果集指针移到下一行
    $_result = $_mysqli ->store_result();
    if(!$_result){
        echo '第二条sql语句有误';
        exit();
    }

    $_mysqli ->next_result();
    $_result = $_mysqli ->store_result();
    if(!$_result){
        echo '第三条sql语句有误';
        exit();
    }
} else {
    echo '第一条sql 语句有误! ';
}

6. 执行数据库事务

事务 (transaction) 是作为整个一个单元的一组有序的数据库操作

如果一组中的所有操作都成功,则认为事务成功,即使只有一个失败操作,事务也不成功

如果所有操作成功完成,事务则提交(commit),其修改将作用于所有数据库进程

如果一个操作失败,则事务将回滚(roll back) ,该事务所有操作的影响都将取消

要使用事务,首先MySQL的数据库引擎必须为MyISAM或BDB

mysqli使用事务进行操作

$_mysqli ->autocommit( false ); // 关闭自动提交

$_sql = "UPDATE ...;UPDATE..." ; //创建多条sql语句

if ( $_mysqli ->multi_query( $_sql )) {

    $_success1 = $_mysqli ->affected_rows == 1 ? true : false ;
        // 获取第一条SQL一影响的行数

    $_mysqli ->next_result();// 指针下移一行

    $_success2 = $_mysqli ->affected_rows == 1 ? true : false ;
        // 获取第二条SQL影响的行数

    if ( $_success1 && $_success2 ) {
            // 判断是否都正常通过了
        $_mysqli ->commit(); //提交
        echo ' 提交成功! ' ;
    } else {
        $_mysqli ->rollback(); // 回滚
        echo '程序出现异常!' ;
    }
} else {
    echo "第一句SQL 语句有误" ;
}

$_mysqli ->autocommit( true ); // 开启自动提交


网址导航