我正在尝试使用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连接工作,如果有人能给我一些线索,为什么这不起作用。
最合适的回答,由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的变量。选择不同的名称。