支持有规范!
admin 2017-10-9
在下版本之前的插件SQL安装功能一直都没进行规范.
在这里做一下规范说明, 并应用到下一个版本 2.0.20 程序中.
先列出代码 以QQ登陆安装函数作为例子
<?php //插件安装时 执行的安装函数 function plugin_install(){ $sql = S("Plugin"); $result = $sql->query(" -- 创建QQ用户表 `hy_qqlogin` CREATE TABLE if not exists `hy_qqlogin` ( `openid` varchar(32) NOT NULL, `uid` int(11) NOT NULL DEFAULT '0', UNIQUE KEY `uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; "); //执行SQL语句 if($result->errorCode() != 0) //执行失败 return $result->errorInfo()[2]; //返回错误原因 return true; //执行成功 } //插件卸载时 执行的安装函数 function plugin_uninstall(){ $sql = S("Plugin"); $result = $sql->query("DROP TABLE `hy_qqlogin`;"); //执行SQL语句 if($result->errorCode() != 0){ //执行失败 return $result->errorInfo()[2]; //返回错误原因 } return true; //执行成功 }
当用户安装插件时触发 plugin_install 称为安装函数
安装函数下执行一些文件或数据库操作
以往的数据库操作 都没有做一个很好的 执行成功失败的识别 以及执行失败的错误反馈
对此在这里做了调整
$result = $sql->query(执行SQL)
query会返回PDO的PDOStatement对象
通过 $result->errorCode() 返回这条query是否失败 并返回具体错误代码
也可以通过 $result->errorInfo()[0] 返回Code代码
上面代码示例中 提到 return $result->errorInfo()[2];
errorInfo[2] 则是执行错误信息
补充一点 如果你不需要返回错误原因 可以直接return false.
再补充一点
errorCode 其实返回的是string类型 如果没有执行错误 则会返回 00000 , 所以你也可以这样判断 errorCode() == 0 或 errorCode() == '00000' 都是一样的!
errorInfo 返回都是数组 他包含了错误代码以及错误信息
所以你可以在上面的代码看到 errorInfo[2] 是返回错误信息