众所周知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; }
在项目中需要对图片进行裁剪,前端裁剪完成发送base64给后端,但是很意外的PHP获取到的数据和前端有点差距,之前我都是先加密,后端解密,但是这次依然不行。于是使用filter_input方法轻松解决。$base64 = filter_input(INPUT_POST...
第一步:服务端文件<?php $wsdlfile='webservice.wsdl'; ini_set('soap.wsdl_cache_enabled','0'); //关闭WSDL缓存 //001...
源码:特别适用于微信支付中通知微信支付网关function array2xml($arr, $level = 1) { $s = $level == 1 ? "<xml&g...
将jsonp转为PHP数组和对象。/** * jsonp转数组|Jsonp转json * @param string $jsonp jsonp字符串 * @param bool $as...
第一次听说端口复用是在mixphp最新版本中发现的,mixphp启动监听9501端口,现在作者说可以多开几个进程来执行mixphp,我心里想了下再启动不是会端口冲突嘛,但是却没有问题,于是下载mixphp的源码解读,原来是启动http服务器使用new Co\Http\Server('0.0....
php event扩展在windows中依赖于php_sockets扩展,因此在php.ini中必须先加载php sockets扩展,如下。extension=sockets extension=event...