众所周知MyISAM引擎不支持事务,但是我只是知道不支持事务,并未测试具体的表现是什么,测试代码如下:
try
{
//开启事务
Db::startTrans();
//(1).id为1的数据name字段修改为gao
$isUpdate1 = Db::table('member')->where(['id' => 1])->update([
'name' => 'gao1'
]);
if (!$isUpdate1)
{
throw new Exception('更新第1条数据失败,事务已经回滚.');
}
//(2).id为2的数据name字段修改为chen
$isUpdate2 = Db::table('member')->where(['id' => 2])->update([
'name' => 'chen'
]);
if (!$isUpdate2)
{
throw new Exception('更新第2条数据失败,事务已经回滚.');
}
// 提交事务
Db::commit();
}
catch (Exception $exception)
{
//事务回滚
Db::rollback();
echo $exception->getMessage() . PHP_EOL;
}通过测试发现MyISAM直接忽视开启事务,提交事务,回滚事务,上面的代码相当于你没有写开启事务,提交事务,事务回滚的效果一样,只要有数据库操作一律直接执行。完全等同于下面的代码:
try
{
//(1).id为1的数据name字段修改为gao
$isUpdate1 = Db::table('member')->where(['id' => 1])->update([
'name' => 'gao1'
]);
if (!$isUpdate1)
{
throw new Exception('更新第1条数据失败');
}
//(2).id为2的数据name字段修改为chen
$isUpdate2 = Db::table('member')->where(['id' => 2])->update([
'name' => 'chen'
]);
if (!$isUpdate2)
{
throw new Exception('更新第2条数据失败');
}
}
catch (Exception $exception)
{
echo $exception->getMessage() . PHP_EOL;
} <?php /* *算法学习自百度.只是学习和记录 */ header("Content-type:text/html;charset=utf-8"); //1.设置奖项,id是奖项id,name是中奖名称,v是中奖概率 $arr =&n...
array_merge是最常用的数组合并方法,+号同样也可以,但是却有很大不同。array_merge遇到相同字符串key,后面数组的key会覆盖前面数组的key,+号正好相反。$a = [ 'one' => 'A on...
参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)代码:<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName =&n...
当我们使用php爬虫采集网站时经常会遇到内容使用ajax异步加载。一般采取的方案是PHP模拟再请求api接口获取数据,但是有时候前端js加密非常麻烦,我们需要将js的加密方法转换为php方法方便curl请求。当然通过了解我们可以通过3种方案解决。第一种:使用phpv8js扩展执行js代码。(pecl...
php event扩展在windows中依赖于php_sockets扩展,因此在php.ini中必须先加载php sockets扩展,如下。extension=sockets extension=event...