更新 WordPress 以使用 mysqli 而不是 mysql
Posted
技术标签:
【中文标题】更新 WordPress 以使用 mysqli 而不是 mysql【英文标题】:Updating WordPress to use mysqli instead of mysql 【发布时间】:2016-03-29 18:17:16 【问题描述】:我正在更新一个旧网站,该网站使用一些集成的纯 php 代码运行最新版本的 WordPress。 PHP 代码使用旧的mysql_
函数来运行数据库查询,因为我将 PHP 版本升级到 5.6,所以我必须摆脱这些。
我开始只是简单地将mysql_
替换为mysqli_
,但是,这会导致以下问题。如果您有一个以前有效的查询:
mysql_query("SELECT...");
现在它会抛出错误,因为 mysqli_query("SELECT...")
期望第一个参数是与数据库的连接。
我能想到的解决方案之一是在任何地方使用$wpdb
,而不是普通的mysql函数,但是,代码有数千个查询,替换所有查询会有点问题,因为@ 987654327@函数后面通常跟mysqli_fetch
等
我倾向于的解决方案是以某种方式从 WordPress 使用的数据库中获取连接,将其保存在一个变量中,比如说 $con
,然后只需搜索并用 @987654331 替换所有当前的 mysqli_query(
@。我认为这应该可行,但我不知道如何初始化 $con
变量,因为似乎无法从 $wpdb
变量中获取连接?所以这里有两个问题:
真的有办法通过$wpdb
或其他WordPress 方法初始化$con
变量吗?
如果答案是否定的,那么通过创建到数据库的新 mysqli 连接并使用它来运行查询来实际初始化 $con
是否明智? (我知道答案是否定的,但因此缺乏解决方案我可能不得不在最后考虑这个选项......)
还有一个额外的问题:谁能从我已经提到的问题中想出一个更好的解决方案/解决方法?
谢谢!
【问题讨论】:
【参考方案1】:首先,检查这个tool。它可以帮助从mysql_*
迁移到mysqli_*
。
如果没有,只需扩展 wpdb:
为“$dbh”编写一个带有 getter 的类:
在任何地方都使用它而不是基类(这个link 可以帮忙)
【讨论】:
谢谢,我自己才想出怎么做。您实际上可以声明一个 'global $wpdb' 然后使用 '$wpdb->dbh' 作为 mysqli_query() 等中的第一个参数。谢谢!以上是关于更新 WordPress 以使用 mysqli 而不是 mysql的主要内容,如果未能解决你的问题,请参考以下文章
需要帮助在 Wordpress 中将 MySQL 转换为 MySQLI