众所周知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;
} 通常我们使用unset()删除数组的元素,数据的顺序并没有重置,使用array_merge()方法即可解决<?php $shoplist= array('a','b','c','d','e','...
上家公司开发医院挂号系统,系统采用GBK编码。ajax发送的中文用户名让PHP保存为cookie出现乱码的解决方案。1.Javascript变量var user=document.getElementById('user').innerText; user=escape(u...
在一个正式项目中操作人员提交239个产品信息进行保存,但是系统却提示没有提交239个产品,于是开启错误信息,显示如下:Warning: Unknown: Input variables exceeded 1000. To incr...
xmlrpc协议是通过http请求xml数据进行通信。webservice中和它相同的是soap。soap调用的确很简单,但是创建wsdl太繁琐,效率低下。xmlrpc很好的解决这个问题。(1).创建xmlrpc服务端(求和函数api)function getSum($method,$ar...
Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者(publisher),订阅者(subscriber)和频道(channel)。 发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个...
有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...