我正在更新一个旧网站,该网站使用一些集成的纯PHP代码运行最新版本的WordPress。PHP代码使用旧的mysql_
函数来运行数据库查询,由于我要将PHP版本升级到5.6,所以我必须去掉这些函数。
我一开始只是在所有地方用mysqli_
替换mysql_
,然而,这导致了以下问题。如果您有一个以前有效的查询:
mysql_query("SELECT...");
现在它抛出并出错,因为mysqli_query("SELECT...")
期望第一个参数是到数据库的连接。
我能想到的解决方案之一是在任何地方使用$wpdb
,而不是普通的mysql函数,然而,代码有数千个查询,替换所有查询会有点问题,因为mysqli_query
函数后面通常跟着mysqli_fetch
等。
我倾向于以某种方式从WordPress使用的数据库中获取连接,将其保存在一个变量中,比如$con
,然后搜索并用mysqli_query($con,
替换所有当前的mysqli_query(
。我认为这应该有效,但我不知道如何初始化$con
变量,因为似乎没有办法从$wpdb
变量获得连接?这里有两个问题:
有没有一种方法可以通过
$wpdb
或其他WordPress方法初始化$con
变量?如果答案是否定的,那么通过创建到数据库的新mysqli连接并使用它来运行查询来初始化
$con
是否明智?(我知道答案是否定的,但由于缺乏解决方案,我最终可能不得不考虑这个选项…)
还有一个额外的问题:有人能从我已经提到的问题中想出更好的解决方案/解决方法吗?
谢谢!
首先,检查此工具。它可以帮助从mysql_*
迁移到mysqli_*
。
如果没有,只需扩展wpdb:
-
用getter为"$dbh"编写一个类:
-
在任何地方使用它而不是基类(此链接可以帮助)