【问题标题】:Updating WordPress to use mysqli instead of mysql更新 WordPress 以使用 mysqli 而不是 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 变量中获取连接?所以这里有两个问题:

  1. 真的有办法通过$wpdb 或其他WordPress 方法初始化$con 变量吗?

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

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

谢谢!

【问题讨论】:

    标签: php mysql mysqli wordpress


    【解决方案1】:

    首先,检查这个tool。它可以帮助从mysql_* 迁移到mysqli_*

    如果没有,只需扩展 wpdb

    1. 为“$dbh”编写一个带有 getter 的类:

    2. 在任何地方都使用它而不是基类(这个link 可以帮忙)

    【讨论】:

    • 谢谢,我自己才想出怎么做。您实际上可以声明一个 'global $wpdb' 然后使用 '$wpdb->dbh' 作为 mysqli_query() 等中的第一个参数。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2015-07-20
    相关资源
    最近更新 更多