首页 > php学习 > php基础知识 > mysqli面向对象的使用②
2016
12-16

mysqli面向对象的使用②

三、执行多条 SQL 语句

有的时候 , 我们需要在一张页面上同时执行多条SQL语句 , 之前的方法就是分别创建多个结果集然后使用。但这样资源消耗很大,也不利于管理。 PHP 提供了执行多条 SQL 语句的方法 $_mysqli ->multi_query();

// 创建多条 SQL 语句

$_sql .= "SELECT * FROM tg_user;" ;

$_sql .= "SELECT * FROM tg_photo;" ;

$_sql .= "SELECT * FROM tg_article" ;

// 开始执行多条 SQL 语句

if ( $_mysqli ->multi_query($_sql)) {//$_mysqli ->multi_query($_sql)只能判断第一条sql语句是否正确

$_result = $_mysqli ->store_result();// 获取当前结果集指针所在位置的SQL语句执行的结果集

print_r( $_result ->fetch_array());

$_mysqli ->next_result();// 将结果集指针移到下一个

$_result = $_mysqli ->store_result();

if(!$_result){echo '第二条sql语句有误'; exit();}

print_r( $_result ->fetch_array());

$_mysqli ->next_result();

$_result = $_mysqli ->store_result();

if(!$_result){echo '第三条sql语句有误'; exit();}

print_r( $_result ->fetch_array());

} else {

echo '第一条sql 语句有误! ' ;

}

6. 执行数据库事务

事务 (transaction) 是作为整个一个单元的一组有序的数据库操作 。 如果一组中的所有操作都成功 , 则认为事务成功 , 即使只有一个失败操作 , 事务也不成功 。 如果所有操作成功完成 , 事务则提交 (commit) , 其修改将作用于所有其他数据库进程 。 如果一个操作失败 , 则事务将回滚 (roll back) ,该事务所有操作的影响都将取消。

首先 , 您的 MySQL 是 MyISAM 或 BDB 引擎的一种 , 一般来说 , 你安装了 AppServ 的集成包 , 你选择 MyISAM 的引擎的数据库即可 。 如果你建立的表不是 MyISAM , 可以在 phpmyadmin里修改。

// 首先你必须关闭自动提交数据

$_mysqli ->autocommit( false );

// 创建一个 SQL 语句 ,必须同时运行成功,不能出现一个成功,一个失败

$_sql .= "UPDATE tg_friend SET tg_state=tg_state+5 WHERE tg_id=1;" ;

$_sql .= "UPDATE tg_flower SET tg_flower=tg_flower-5 WHERE tg_id=1;" ;

if ( $_mysqli ->multi_query( $_sql )) {// 执行两条 SQL 语句

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

$_mysqli ->next_result();// 下移,第二条 SQL

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

if ( $_success && $_success2 ) {// 判断是否都正常通过了

$_mysqli ->commit(); //提交

echo ' 提交成功! ' ;

} else {

$_mysqli ->rollback(); // 回滚

echo '程序出现异常!' ;

}

} else {echo "第一句SQL 语句有误" ;}

// 最后还必须开启自动提交

$_mysqli ->autocommit( true );

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。