正文
php数据事务 php 事务四大特性
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
php中有没有事务的概念
事务操作一般情况下只是在数据库层面上体现,在PHP中是没有事务概念的。常用的数据库MySQL,SQLServer,Oracle等都支持事务处理。:)
其实很简单就是SQL语句,在执行事务前使用Begin Trans(说明不同的数据库事务处理不同,思路相同)
然后进行事务处理,如果成功则Commit提交事务,如果失败可以使用Rollback回滚事务。
希望对你有帮助。
PHP中执行MYSQL事务解决数据写入不完整等情况
近来稍有时间研究了下MYSQL中php数据事务的事务操作php数据事务,在很多场合下很是适用,譬如在注册的时候需要初始化很多张关联表的时候,问答回复的时候需要至少同时操作两张表,这些都会在某些时候只能成功更新一张表,而另外的SQL语句出现错误,正常的操作会导致初始化了一张表
,其他的都木有能初始化,这个时候就会导致用户表里的用户信息已经执行插入,导致提示注册失败,但是用户已经注册了部分信息,这个时候需要程序员去数据库删除相应的数据是一个比较不好的事情。
因此这边考虑使用事务,事务可以进行模拟SQL操作,当所有的SQL都操作成功的时候才进行SQL操作,只要有一个操作失败就回滚当前事务的所有SQL操作,避免出现上面描述中出现的数据写入不完整等情况。
下面是鄙人写的一小段代码,欢迎大家参考和提出意见:
复制代码
代码如下:
/**
*
@todo
多条sql的事务处理
*
@param
$sqls
array
*
@return
boole
true/false
*/
public
function
doArraySqlActionsTran($password,$sqls){
$db
=
$this
-
doSqlLink($password);//打开数据库链接
$db
-
autocommit(FALSE);//设置为不自动提交,因为MYSQL默认立即执行
//获取SQL执行结果数组
for
($i=0;$icount($sqls);$i++){
$result[$i]
=
$db
-
query($sqls[$i]);
}
//解析SQL执行结果数组
for
($j=0;$jcount($result);$j++){
if
($result[$j]==FALSE){
$result[$j]='false';
}else{
$result[$j]='true';
}
}
//查找SQL结果数组中是否存在false结果集
if
(in_array('false',$result)){
$sqlResult=FALSE;
}else{
$sqlResult==TRUE;
}
//根据结果集进行数据库回滚或者执行操作
if
($sqlResult==FALSE){
$db
-
rollback();//判断当执行失败时回滚
$return=FALSE;//
正式环境中使用
//$return='ROOLBACK';//test
标记使用
}else{
$db
-
commit();//执行事务s
$return=TRUE;//
正式环境中使用
//$return='COMMIT';//test
标记使用
}
$db-autocommit(true);
//设置为非自动提交——事务处理
$db-close();//关闭连接
return
$return;
}
到此事务执行批量SQL操作基本完成,谢谢大家php数据事务!
PHP 中mysql如何实现事务提交
事务就是指对数据库php数据事务的多次修改php数据事务,要么全部成功php数据事务,要么全部失败,不能出现部分修改成功,部分修改失败php数据事务的情况。
PHP下操作mysql数据库要实现事务提交,需注意以下方面:
1, 数据库表存储引擎类型设置为innoDB。默认的mysql表采用MYISAM引擎,是不支持事务的,因此要采用以下语句变更:
mysql alter table ‘table_name’ engine=innodb;
2,PDO对象设置要设置errmode为Exception,否则第16行SQL执行出错,语句也不会跳到catch段去rollback, 而是继续向下执行直到commit。
PHP一般是如何做SQL事务处理的
事务是tran
不是trin
begin
tran
delete
from
a
where
uid='002'
delete
from
b
where
uid='002'
commit
tran
如果没有特殊需要,不必使用rollback
tran,执行两个表删除的时候,如果遇到某个语句出错,都会自动回滚的。
php中的事务有什么作用
严格说这不算是PHP的事务,应该是数据库的事务。
普通的SQL语句如果你UPDATE一个地方就没法恢复了,但用事务去处理的话还可以恢复,也就是事务的回滚。
请问在php中如何控制多表事务?
php框架中多表事务操作实例,参考如下:
function makeAcquire($nUsers,$nAwards)
{
//更新数据库
$tranDb = new Model();
$tranDb-startTrans();
for($i = 0; $i sizeof($nUsers); $i++)
{
//更新表Acquire
$flagAc = $tranDb-table('Acquire')-add($acquire);
//更新表Users
$where = array('u_id'=$nUsers[$i]['u_id']);
$flagU = $tranDb-table('Users')-where($where)-setInc('u_man_count',1);
//更新表Award
$where = array('a_id'=$nAwards[$i]['a_id']);
$flagA = $tranDb-table('Award')-where($where)-setDec('a_count',1);
}
if($flagAc $flagU $flagA)
{
$tranDb-commit();
}
else
{
$tranDb-rollback();
}
}
关于php数据事务和php 事务四大特性的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。