在大型代码库中将PHP MySQL替换为MySQL?



我们知道其他驱动程序已弃用,从 php7 开始,建议使用mysqli方法。问题是我很久以前从我的一个雇主那里遇到了代码库,他想要更新。

现在大约有 3K 文件,以前的开发人员在几乎每个文件中输入 3-5 次mysql_query调用方面做得很好。您如何建议一次更新所有这些,如果将来有人遇到相同的问题,也许是某种方法覆盖技巧。

目前,我正在使用 2 个 vim 宏,这些宏可以找到mysql_关键字并替换为mysqli_和另一个将$con作为第一个参数添加到方法mysqli_connect中。

即使有了这种自动化,我仍然需要单独打开所有文件。任何更好的黑客都值得赞赏,这将阻止我手动打开所有文件并进行更改。

这是更新代码库中所有函数的简短方法。

mysql_替换为mysqli_

所以我用于此的宏 vim 宏是

:%s/mysql_/mysqli_/g

这似乎适用于几乎所有功能

更改需要额外参数的方法

mysqli_query需要另一个参数$con所以我创建了一个宏,例如

:%s/mysqli_query(/mysqli_query($con/g

这将添加$con变量。

将宏保存到文件

现在,可以使用以下命令将上述宏存储在文件中

"ap

其中a是宏名称,类似地重复b并将它们另存为a.vimb.vim

在所有文件上运行

现在简单的技巧是使用 bash 脚本在所有文件上运行宏。我只是为此创建了一个循环

for i in *.php;
do
vim -s ./macro/a.vim $i;
echo $i;
done

这将在所有文件上运行a.vim宏。同样,对b.vim重复该步骤。

存储和关闭文件

默认情况下,vim将在运行宏后打开文件,默认情况下我们需要保存该文件。在宏脚本末尾添加以下内容

:wq!

这将在进行更改后保存并退出php文件,使整个过程更快,更自主

请注意,上述方法有效,但您可能需要进行一些更改,具体取决于您的代码库以及如何调用方法。

作为一种解决方法,我创建了一个小的 PHP 包含文件,该文件使用mysqli_*()-functions 重新创建旧的mysql_*函数:fix_mysql.inc.php

最新更新