[TOC] #### 1. 前言 --- 微擎開發(fā)文檔:[https://wiki.w7.cc/chapter/35?id=1520](https://wiki.w7.cc/chapter/35?id=1520) 應(yīng)用發(fā)布后,開發(fā)者如果想在用戶安裝、更新、卸載應(yīng)用時,安裝一些數(shù)據(jù)表,變更一些數(shù)據(jù)表或是執(zhí)行一些腳本,可以通過在 manifest.xml 中進(jìn)行設(shè)置。 #### 2. manifest.xml --- manifest.xml 文件中的 `install`、`uninstall`、`upgrade` 標(biāo)簽分別用來設(shè)置應(yīng)用 `安裝、卸載、更新` 時指定sql語句或腳本 也就是 ~~~ <install><![CDATA[SQL語句或php文件名]]></install> ~~~ 示例: 推薦使用php文件名, 便于更好的管理應(yīng)用 `安裝、卸載、更新` 時執(zhí)行的文件 ~~~ <install><![CDATA[install.php]]></install> <uninstall><![CDATA[uninstall.php]]></uninstall> <upgrade><![CDATA[upgrade.php]]></upgrade> ~~~ ~~~ <install><![CDATA[ CREATE TABLE IF NOT EXISTS `ims_applet_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶id', `uniacid` int(11) NOT NULL DEFAULT '0' COMMENT '平臺id', `unionid` varchar(30) DEFAULT '' COMMENT '開發(fā)平臺唯一標(biāo)識', `openid` varchar(50) NOT NULL DEFAULT '' COMMENT '用戶openid', `nickName` varchar(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT '' COMMENT '微信昵稱', `gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性別 0 未知 1 男 2 女', `avatarUrl` varchar(255) NOT NULL DEFAULT '' COMMENT '微信頭像', `create_time` int(11) NOT NULL COMMENT '添加時間', `update_time` int(11) DEFAULT NULL COMMENT '修改時間', `delete_time` int(11) DEFAULT NULL COMMENT '軟刪除', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表'; ]]></install> ~~~ #### 3. 安裝模塊執(zhí)行 install.php --- ```php <?php // 安裝模塊執(zhí)行 創(chuàng)建模塊的數(shù)據(jù)表 $sql = " CREATE TABLE IF NOT EXISTS `ims_applet_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用戶id', `uniacid` int(11) NOT NULL DEFAULT '0' COMMENT '平臺id', `unionid` varchar(30) DEFAULT '' COMMENT '開發(fā)平臺唯一標(biāo)識', `openid` varchar(50) NOT NULL DEFAULT '' COMMENT '用戶openid', `nickName` varchar(255) CHARACTER SET utf8mb4 NOT NULL DEFAULT '' COMMENT '微信昵稱', `gender` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性別 0 未知 1 男 2 女', `avatarUrl` varchar(255) NOT NULL DEFAULT '' COMMENT '微信頭像', `create_time` int(11) NOT NULL COMMENT '添加時間', `update_time` int(11) DEFAULT NULL COMMENT '修改時間', `delete_time` int(11) DEFAULT NULL COMMENT '軟刪除', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶表'; "; pdo_run($sql); ``` #### 4. 卸載模塊執(zhí)行 uninstall.php --- ```php <?php // 卸載模塊 刪除模塊的數(shù)據(jù)表 $sql = <<<EOT DROP TABLE IF EXISTS `ims_applet_user`; EOT; pdo_run($sql); ``` #### 5. 模塊升級時執(zhí)行 upgrade.php --- **追加字段:`ims_lottery_user` 表的 `goods_info` 字段不存在時則添加上該字段** ~~~ if (!pdo_fieldexists('lottery_user', 'status')) { pdo_query("ALTER TABLE " . tablename('lottery_user') . " ADD `status` tinyint(1) DEFAULT NULL"); } ~~~ **追加數(shù)據(jù)表: `ims_lottery_goods_tips` 表不存在則創(chuàng)建該數(shù)據(jù)表** ~~~ if (!pdo_tableexists('lottery_goods_tips')) { pdo_query("CREATE TABLE IF NOT EXISTS `ims_lottery_goods_tips` ( `id` int(11) NOT NULL AUTO_INCREMENT, `goods_id` int(11) NOT NULL COMMENT '獎品ID', `type` varchar(255) DEFAULT NULL COMMENT '說明類型', `textValue` varchar(255) DEFAULT NULL COMMENT '輸入內(nèi)容(type=text)', `image` text COMMENT '圖片(type=image,bigimg)', `value` text COMMENT '內(nèi)容(type=scan,smallCode)', `create_time` int(11) NOT NULL COMMENT '創(chuàng)建時間', `update_time` int(11) DEFAULT NULL COMMENT '更新時間', `delete_time` int(11) DEFAULT NULL COMMENT '刪除時間', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品說明';"); } ~~~