我正在尝试访问与我的wp DB相同的本地主机上的另一个DB,我是这样做的:
功能。php:
add_action(\'init\',\'my_new_db\');
function my_new_db(){
$newdb = new wpdb( \'test\', \'test\', \'test\', \'localhost\');
$newdb->show_errors();
}
第页中的以下内容。php:
<?php
global $newdb;
$test = $newdb->prepare( "SELECT `...`, `...` FROM ..." );
$result = $newdb->get_results($test);
return($result);
?>
这些点填写正确,不用担心,尽管这是我查询的消息,我没有得到错误或结果。
最合适的回答,由SO网友:s_ha_dum 整理而成
这是一个可变范围,一个纯粹的PHP,核心问题。
我没有关闭它,因为我假设错误是由于对init
钩子,或者通常是钩子,这是特定于WordPress的。
在PHP中,必须声明全局global
第一次使用之前init
钩子在页面加载过程中很早就启动了,早在page.php
执行您的$newdb
未声明变量global
直到page.php
因此,声明变量global
在使用后init
行动,因此为时已晚要解决此问题,请声明变量global
在回调到init
行动挂钩。
add_action(\'init\',\'my_new_db\');
function my_new_db(){
global $newdb;
$newdb = new wpdb( \'test\', \'test\', \'test\', \'localhost\');
$newdb->show_errors();
}
您仍然需要global $newdb;
在您的page.php
文件以访问您创建的全局文件。不要移除它。