TP事物的写法】的更多相关文章

Db::startTrans(); try{ Db::commit(); } catch (\Exception $e) { Db::rollback(); } use think\Db; public function addInfoData($member_id, $type, $money, $invoice_name, $invoice_tel, $email, $taxpayer_number, $id) { Db::startTrans(); try{ $invoice_id = $…
SET TRANSACTION NAME 'Update salaries'; SAVEPOINT before_salary_update; UPDATE employees SET salary=9100 WHERE employee_id=1234 # DML ROLLBACK TO SAVEPOINT before_salary_update; UPDATE employees SET salary=9200 WHERE employee_id=1234 # DML COMMIT COM…
现在的网站功能越来越全乎了,很多网站都需要做支付功能,而且很多大平台都提供了各式各样的api来扩充自己的用户和开发者.话说,这种使用大平台的api来做支付,无论是从成本上还是从开发效率上都是很好的选择.今儿我就来念叨念叨怎么集成支付宝的api,其实想写关于支付的文章已经很久了,哎~,就是有点儿小忙,趁着9月的最后一天,随便码点儿字吧. 一.支付宝担保支付 支付宝的api在商家服务中,下面是网址:https://b.alipay.com/newIndex.htm,话说,这里面的产品可真是多啊,不过…
我曾在公司内部的一次技术培训课程中讲到如何展开可变模板参数的问题,具体来说是如何打印可变模板参数,我初略数了一下,有很多种,下面来看看到底有多少种不同的方法展开可变模板参数吧. //展开变参的N种方法, 以print为例 //----写法1 template<typename T> void print(T t) { cout << t << endl; } template<typename T, typename... Args> void print(…
                                   一般操作                                                          必会的13条             <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个, 如果符合筛选条件的对象超过一个或者没有都会抛出错误. <3> filter(**kwargs): 它包含了与所给…
mysql  默认 MyISAM存储引擎,不支持事物处理,InnoDB存储引擎提供了具有提交.回滚和崩溃恢复能力的事务安全.但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引 查看 当前数据库的引擎show variables like '%storage_engine%'; 查看当前表使用的引擎 show table status from ceshi where name='user'; 修改表引擎方法 alter table user e…
$maps['deadline'] = array(array('gt',0),array('elt',$endTime), 'and');…
  控制器: Db::table('think_user')->where('status=1')->order('id desc')->limit(5)->select();   模型中: $list = User::all(function($query){ $query->where('status', 1)->limit(3)->order('id', 'asc'); });   文章来源:刘俊涛的博客 欢迎关注公众号.留言.评论,一起学习. ______…
bash脚本中 的 set -e表示 exit immediately if a simple command returns a non-zero value.主要是为了防止错误被忽略.会被立即退出, 但是最好在开发结束后, 删除这个指令, 以免留下隐患. 有四种命令提示符, 有PS1, 自然就有 PS2 PS3 PS4, 分别表示 PS2即 在后续的命令下一行的提示符(continu'ation interactive prompt), PS3是在select选项时 的提示符, PS4是调试…
thinkphp框架里面自带有很多自动验证的规则,下面是框架自带的正则验证的规则,官方的说明文档里面没有这么多,所以记下来,以备使用. view sourceprint?01static $regex = array(02         'require'=> '/.+/', //匹配任意字符,除了空和断行符03         'email' => '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/',04         'phone' =&…
自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异.   下面给出一些常见示例的写法:   比如,下面是一个对Service包上所有方法的切面配置   <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* *..service*..*(..))"/> <a…
$model=M("user","","mysql://root:222222@localhost:3306/jiaoyou"); //换数据库 原生写法: //$sql="select a.areaname,u.userid,u.username , u.gender, u.avatar, u.avatarflag ,p.cityid,p.height,p.astro ,p.ageyear ,p.marrystatus ,p.luna…
測试了非常多遍,TP官网根本就没有给出正确的写法,并且网上搜索到的全都是错误的. 跟踪代码.终于找出了正确的配置写法,备份例如以下.(by default7#zbphp.com) 'DB_TYPE' => 'oracle', // 数据库类型 'DB_HOST' => 'oracle.zbphp.com', // server地址 'DB_NAME' => '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.zbphp.com)(PORT=…
在浏览器中如果要访问操作方法的时候以什么方式来访问 有四种方式 第一种是get方式,第二种是访问路径 这四种方式我们可以通过修改配置文件来改掉url的模式 我们需要来改一下我们的配置文件 在这个路径下来改配置,打开这个文件 改什么配置呢 再打开这个路径下的文件 找到这个文件url打头的 把这句话复制一下,把它拿到我们自己的配置文件里粘贴 在这里面进行修改 这里有个数字,代表我们的访问模式,如果是0的话,就是普通方式,get方式,如果改1的话,就是路径模式,如果改2的话就是重写模式,如果是3的话就…
操作数据库,进行增删改数据 一.对数据表添加数据(方法:add()) (1)上一篇已经讲过链接数据库了,继续进行对数据库的操作,还是用控制器文件中的HomeController.class文件 看下数据库表中的现有数据,然后在进行添加数据 添加数据有三种方法 其中第一种和第二种的添加数据方法不用判断语句,直接找到表然后进行编写就可以 public function tianjia() { $n = M("nation"); //下面就是第一种和第二种添加的方式 } 1.使用数组方式添加…
命名空间 相当于虚拟目录 所有类文件都放在虚拟目录 功能:实现自动加载类 TP框架的命名空间要更复杂 内容=> 命名空间中定义和使用 都用\1初始命名空间 相当于 根目录 如:Library文件夹 初始命名空间下包含根命名空间 根命名空间:1.LIbrary目录下面的所有 文件夹2.程序目录下模块名 定义命名空间 写法:从根开始写,写到本类的该目录下为止使用命名空间 从根开始写,写到类名为止 TP框架下每个类文件都要加命名空间,namespace ########################…
TP 3.2.3 接入PHPMailer 项目需要接入邮件发送,这里先记录. 首先在开发这个功能先,您需要先下载个phpmailer的类,这里github 一搜索就有. 如:https://github.com/PHPMailer/PHPMailer 可以克隆或直接下载. 然后再就是您需要一个邮箱,然后这个邮箱能开通  POP3/SMTP服务和 IMAP/SMTP服务 ,这个很重要,只有开通了才能发送邮件出去,要是您的项目是企  业项目,那你的邮箱最好开通企业邮箱,因为发送次数比较充裕. 如下图…
script标签, 即 html中的 js脚本区域中: 它其实就是一个 普通的 html标签, 在 html 渲染器 parser 看来, 它跟其他任何的普通 的 html标签 , 比如 p 标签, 比如 div 标签 等等, 没有 什么两样, 因此, 凡是在 html 的 任何 普通标签中, 比如 div 标签中, 可以使用的 任何东西, 在 js script 标签 中, 都是 一样的 使用 , 而且 是同样有效的 : 比如: 在 script 标签中 一样 可以使用 tp的 输出变量, 一…
假如: 你写好了一段完整的代码,模型对数据库的操作,增删改查什么的,都没有问题,当然运行速度也是最快的,完全不用担心会出错, 前提肯定是已经写好的一整段代码, 但是,万一服务器中断了呢,执行一半,后面的就停止了,BugBugBugBugBugBugBugBugBug 不过如果有一个服务器运维的在处理,基本都不会出现这样的问题,但是万分之一的几率还是会有的,BugBug, 这时候可以通过数据库的事物来解决这个方法, 事物的原理简单来说就是:操作数据库的时候,如果不完整的去实现所有数据库操作,就全部…
###################总结########### 视图是一个虚拟表(非真实存在) 是跑在内存中的表,真实表是在硬盘上的表 使用视图我们可以把查询过程中的临时表摘出来,保存下来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可 缺点:视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便 ###创建2张表 create table course(cid i…
在tp的数据库配置中, convention.php中所有的选项都没有设置,要自己在Home/conf/config.php中自己设置, 注意几个地方,一是数据库的名字是: db_name,不是db_database,二是用户密码,是db_pwd. 在创建数据库的时候, 依次是 create_definition, 和 table_options. 在table_options中, 格式是 key [=] value, 其中的等号是可以省略的, 而且 key是可以用简写的, 比如: defaul…
模型类的自动验证? 分为自动验证, 和 动态验证(手工验证), 前者的验证规则是定义在模型类中的, 所以要自己创建 扩展的/继承的模型类, 同时用 D方法实例化模型类 而动态验证是 先调用 validate($rules)方法,然后调用create方法, 不依赖于模型类,所以可以用M方法创建实例$User=M('user'); if(!$User->validate($rules)->create() { exit($User->getError()); } else {...} ) t…
杂项 系统中的电感线圈元件, 虽然不消耗电能, 但是会 占用系统的容量(相当于占用资源但是不做事), 会使系统 的发电量的使用效率降低, 线路损耗增大, 发出同样有功用电量所需的设备容量扩大 将感性元件和容性元件串接在一起的好处是: 感性负载电流 的相位 落后 系统电压(这个是作为参考电压使用的) 90度(理解: "电场先被线圈铁芯吸收, 转变为磁能 然后才有电流, 所以 电感电流的相位更落后"), 而容性负载电流的相位比 系统电压 提前 90 度, 所以 两者如果串联的话, 刚好抵消…
namespace   Home\Controller;  命名空间   根命名空间下的类所在的文件夹use Think\Controller; 使用   根命名空间下的controller类 顶头写写在最上面 命名空间:虚拟目录目的:自动加载类 初始命名空间:Library(公用的,为了保证他的完整性,一般不往这里面写) 根命名空间:    1.Library下的所有文件夹    2.应用程序的模块名(home) 命名空间的写法(反斜杠):\    从根命名空间开始写,写到该类所在的文件夹为止…
关于pop-up被blocked的问题 首先 这个pop-up的功能叫 popup blocker , 它是浏览器(包括ff, chrome等) 自身 所内置 的一个功能, 不是 安装的外部 插件/或扩展. 所以 你即使禁用 ff的所有的 外置插件和扩展 都不会有用的 这个popup-blocker 的设置,是在 preferences中, 通常在 privacy 或者 security 或 contents中, 比如 ff就是在 content中, 有一个专门的设置 "Pop-ups Bloc…
为什么有时候会 出现 "上传文件保存错误"? public function save($file, $replace=true){ /* 移动文件 */ if (!move_uploaded_file($file['tmp_name'], $filename)) { $this->error = '文件上传保存错误!'; // 比如写权限, 或文件本身的一些问题, 或者 网络关闭/网速慢等的一些问题等 return false; // 都有可能 引起上传文件的 保存错误! }…
new Image(宽度,高度) $(image).attr('src', ...).load(function(){....}) load表示浏览器从服务器下载(装载)对象完成, 这个load方法很重要, 可以由浏览器自动判断一个对象, 或者一个节点是否装载.下载完成了 new Image的时候, 内存缓存中 的图像 如何装载进来, 要加入到文档的某个节点中来才能 生根,才能显示?? 使用 ajax事件:浏览器系统会自动检查 ajax的(全局)开始和结束, 以及每一次ajax请求的开始和结束,…
表示一个域名下的所有/任何主机 使用 的格式是: [*.] example.com 其中 , example.com叫着 裸域名. (这个example.com/net/org不能被注册, 被保留) 其中 [*.] 中的 点 要放在 括号内. tp的类自动加载, 总的来说 分两大类 一类是 使用 命名空间的, 这个也是 tp推荐的方式, 可以实现自动加载 另一类是 不使用 命名空间的. 要实现 自动加载, 需要遵循 以下规定: 是要用 命名空间 来定义; 是 类的命名要符合 规范, 包括 驼峰命…
NaN是Number对象的一个属性, 表示一个特殊值, 表示不是一个 数字, 引用/赋值时, 要使用: Number.NaN 判断 一个值是不是 NaN, 用 isNaN() 函数, 它是一个js的全局函数 , 所以前面不需要用 对象什么的来引用, 直接使用 isNaN() . 同时要注意, 判断一个数是否是NaN不能用 == NaN, 因为NaN, 不等于任何值, 即使是它自身也不相等, 即: NaN != N阿N 注意这个函数不要 想反了. 是判断一个变量(不是一个数字). 当在一个 (任意…