更新WordPress以使用mysqli而不是mysql


Updating WordPress to use mysqli instead of mysql

我正在更新一个旧网站,该网站使用一些集成的纯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变量获得连接?这里有两个问题:

  1. 有没有一种方法可以通过$wpdb或其他WordPress方法初始化$con变量?

  2. 如果答案是否定的,那么通过创建到数据库的新mysqli连接并使用它来运行查询来初始化$con是否明智?(我知道答案是否定的,但由于缺乏解决方案,我最终可能不得不考虑这个选项…)

还有一个额外的问题:有人能从我已经提到的问题中想出更好的解决方案/解决方法吗?

谢谢!

首先,检查此工具。它可以帮助从mysql_*迁移到mysqli_*

如果没有,只需扩展wpdb:

  1. 用getter为"$dbh"编写一个类:

  2. 在任何地方使用它而不是基类(此链接可以帮助)