使用事务处理转移帐户的PHP
< PHP
标题(内容类型:文本/ HTML;字符集= UTF-8);
$ mysqli =新的mysqli(localhost
$ mysqli -> set_charset(utf8);
如果($ mysqli -> connect_errno){
模具('database连接失败'。$ mysqli -> connect_error);
}
$ mysqli ->自动提交(假); / /自动提交模式设置为false
如果事务成功执行,则为
为查询=更新账户余额= balance-1000 id是3;
结果=美元美元mysqli ->查询($查询);
affected_count美元=美元-> affected_rows mysqli;
如果美元(结果affected_count | |!= 0){失败
$标志= false;
}
$更新帐户集=余额= 1000,其中id = 2 ;
结果=美元美元mysqli ->查询($查询);
affected_count美元=美元-> affected_rows mysqli;
如果($结果| |!{ $ affected_count = = 0)
$标志= false;
}
如果($标志){
$ mysqli ->提交();
回声'成功转移';
{人}
$ mysqli ->回滚();
回声转移失败;
}
$ mysqli ->自动提交(true); / /复位自动提交事务
$mysqli->close ();
>
代码的两:
< PHP
尝试{
为PDO =新PDO(MySQL:主机= localhost;北京PSP
为PDO -> exec(SET NAMES UTF8);
为PDO -> setAttribute(PDO::::attr_errmode,PDO errmode_exception); / /设置异常处理模型
为PDO -> setAttribute(PDO::attr_autocommit,0); / /关闭自动提交
} catch(PDOException,e){
数据库连接失败;
出口;
}
尝试{
10美元;
($ PDO ->开始); / /交易
affected_rows1美元=美元PDO -> exec(更新kfry集k_age = k_age + { },k_name = 'user1美元时代);
affected_rows2美元=美元PDO -> exec(更新kfry集k_age = k_age - { },k_name = 'user2美元时代); / /的变化或失败的成功实施
/ *如果($ affected_rows1 affected_rows2美元)
{
为PDO ->提交();
操作成功;
其他{ }
为PDO ->回滚();
**
如果(!affected_rows1美元)
把新PDOException(加入错误);
如果(!affected_rows2美元)
把新PDOException(减少错误);
操作成功;
($ PDO ->提交); / /如果你在这里表演在两更新SQL语句执行成功前,整个事务执行成功
} catch(PDOException,e){
回声操作失败。$ E -> GetMessage();
($ PDO ->回滚); / /执行事务的表出了问题,所有事务的撤销
}
为PDO -> setAttribute(PDO::attr_autocommit,1);
测试成功
操作结果:;
为SQL =SELECT * FROM kfry ;
结果=美元美元PDO ->查询($ SQL);
foreach($结果$ V)
{
echo $ V { 'k_name}。。$ V { 'k_age}。;
}
>
以上是本文的全部内容,希望大家能喜欢。