我们知道其他驱动程序已弃用,从 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.vim
并b.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