连接到第二个数据库时,我在查询时没有结果

时间:2014-03-06 作者:David H

我正在尝试访问与我的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);

   ?>
这些点填写正确,不用担心,尽管这是我查询的消息,我没有得到错误或结果。

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

这是一个可变范围,一个纯粹的PHP,核心问题。

我没有关闭它,因为我假设错误是由于对init 钩子,或者通常是钩子,这是特定于WordPress的。

在PHP中,必须声明全局global 第一次使用之前

  • init 钩子在页面加载过程中很早就启动了,早在page.php 执行您的$newdb 未声明变量global 直到page.phpglobal 在使用后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 文件以访问您创建的全局文件。不要移除它。

  • 结束

    相关推荐

    MySql Query very slow

    我的网站上有一个查询问题。当我加载页面时,速度非常慢,只有在超过12秒后,内容才会开始显示。我安装了一个调试插件,并找到了耗时很长的查询。插件的输出如下:时间:12315.2ms(12.315196037292s)查询:SELECT SQL_CALC_FOUND_ROWS meruca_posts.ID FROM meruca_posts WHERE 1=1 AND ( meruca_posts.ID NOT IN ( SELECT o