加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

为软件开发人员创建PHP / MySQL升级脚本的最佳方法是什么?

发布时间:2020-12-13 18:06:29 所属栏目:PHP教程 来源:网络整理
导读:我是一名 PHP软件开发人员,我正在寻找解决这个问题的最佳解决方案.我正在创建一个脚本,将来会有新版本,包括新功能,错误修正等.我知道如何在升级脚本中进行代码更改,但是我正在开发的脚本使用MySQL将数据存储在多个表中. 现在问题是,我已经想出了如何为初始版
我是一名 PHP软件开发人员,我正在寻找解决这个问题的最佳解决方案.我正在创建一个脚本,将来会有新版本,包括新功能,错误修正等.我知道如何在升级脚本中进行代码更改,但是我正在开发的脚本使用MySQL将数据存储在多个表中.

现在问题是,我已经想出了如何为初始版本制作安装脚本,但是制作可以将任何以前的版本升级到最新版本的升级脚本的最佳解决方案/方法是什么?最新版本有新的MySQL表(不是问题),但它也会更改数据库结构(新列,删除列等).我将在下面创建一个场景,以更好地描述我担心的问题.

v0.1.0 – Initial Release

v0.1.1 – Has a new database table and some fields added to the table structure

v0.2.0 – Has more new fields added to different tables

My concern is the the upgrade v0.1.0 > v0.2.0 because there were changes between the two versions.

更新我可能已经提到我只使用GitHub作为我的VCS代码.所有代码更改都保存在那里,并在安装或升级脚本中进行代码更改,我只是计划覆盖用户的当前文件,因为它们不应该在类/函数文件中包含任何数据.

根据我的经验,最好的方法是在MySQL中创建一个版本控制表,其中包括应用程序的版本号以及任何更改数据库结构的查询.基本上:
CREATE TABLE versions (
    app_version DOUBLE NOT NULL,query TEXT,created TIMESTAMP NOT NULL 
);

使用我们的安装脚本,我们会记下我们的初始应用程序版本和目标应用程序版本,并选择需要执行的所有查询才能使用.

SELECT query FROM versions WHERE app_version > {$initialAppVersion} AND app_version <= {$destinationAppVersion} ORDER BY created ASC;

在PHP中:

foreach ($resultset AS $row) {
    $stmt = $db->prepare($row['query']);
    try {
       $stmt->execute();
    } catch (Exception $e) { /* handle exception */ }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读