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 ); // 开启自动提交