使用wpdb连接到其他数据库不起作用

时间:2020-02-01 作者:user3732999

我正在尝试使用wordpress内置数据库功能连接到本地主机上的其他数据库。我在函数中这样做。php。

我用mysqli实现这一点没有问题,连接已经建立,我可以通过打印出数据库中的表名或任何其他查询来测试这一点。然而,wpdb并非如此。

这起作用了:

$db = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);

这不起作用:

$db = new wpdb(DB_USER, DB_PASSWORD, DB_DATABASE, DB_SERVER);

$mytables=$db->get_results("SHOW TABLES");
foreach ($mytables as $mytable)
{
    foreach ($mytable as $t) 
    {       
        echo $t . "<br>";
    }
}
无论我使用什么查询,它都不会显示任何内容,我只会得到一个有200个响应的空白页面,这表明没有任何错误,但没有找到任何数据。在这里,mysqli将向我显示数据,不会出现任何问题。

我只想使用mysqli,但我想使用prepared语句,这在wordpress上似乎不是一个选项。我需要让wpdb连接工作,如果有人能给我一些线索,为什么这不起作用。

1 个回复
最合适的回答,由SO网友:user3732999 整理而成

我发现了问题。

我在自己的数据库连接配置文件中使用名称DB\\u USER、DB\\u PASSWORD等定义了变量。然后我发现wordpress已经使用这些完全相同的名称定义了变量,这些名称存储在wp includes目录中的一个文件中。因此,当我尝试使用wpdb连接时,我自己定义的同名变量被覆盖或忽略。

我自己定义的变量适用于我的\\u sqli而不是wpdb的原因是,我假设调用wpdb连接会触发包含这些已定义连接变量的脚本。我在wpdb连接上使用var\\u dump时发现了这一点,我发现使用的是一个完全随机的用户名,而不是我自己的用户名。

因此,如果要使用wpdb连接并连接到具有不同连接详细信息的数据库,请不要定义名为DB\\u USER、DB\\u PASSWORD、DB\\u SERVER和DB\\u database的变量。选择不同的名称。

相关推荐

PHP联系人表单未重定向

我在wordpress上构建了一个PHP联系人表单,根据用户选择的区域重定向用户。我用过“www.google”。com作为测试URL。但是,表单在提交后不会被重定向并保持在同一页面上。我哪里做错了?请查找以下代码:<?php if(isset($_POST[\'submit\'])) { $region = $_POST[\'Region\']; switch ($region ) { case \'North\': $