Zend Framework 1 lock tables 锁表的一些研究

因为工作原因需要用到mysql的锁表

原理:

lock tables

do

unlock tables

在Zend Framework中实现的时候遇到了写波折,实现不是很简单

先说一种错误的写法,想当然的一种写法,我用的是Mysqli连接数据库

2016-07-23_15-46-22

我第一意向想当然的是使用上面的代码
实际结果:报错“Mysqli prepare error: This command is not supported in the prepared statement protocol yet”
预处理不通过,网上继续查资料ing
参考链接:Zend Db Read locks,让我眼前一亮
正确代码如下:

2016-07-23_15-47-19

不甚满意,继续追求答案,在stackoverflow上面找到两个解答,可以用事务来处理这个,且更加完美,执行事务的时候,mysql也会锁表,还可以回滚,何乐而不为呢。stackoverflow是个好网站
参考链接:Can we lock tables while executing a query in Zend-Db

MySQL transactions vs locking

补充:mysql”MYISAM”存储引擎不支持事务处理,“INNODB”存储引擎才支持事务

最终代码:

2016-07-23_15-48-32