Drupal 7 无法从Drupal 7中的其他数据库获取数据

Drupal 7 无法从Drupal 7中的其他数据库获取数据,drupal-7,Drupal 7,我正在尝试从Drupal7中的另一个数据库获取数据。但我无法获得数据。这是我试过的代码 我在settings.php中添加了另一个数据库信息 $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'drupal_testing', 'username' => 'root', 'password' => '', 'host' => 'localhos

我正在尝试从Drupal7中的另一个数据库获取数据。但我无法获得数据。这是我试过的代码

  • 我在settings.php中添加了另一个数据库信息

    $databases['default']['default'] = array(
      'driver' => 'mysql',
      'database' => 'drupal_testing',
      'username' => 'root',
      'password' => '',
      'host' => 'localhost',
      'prefix' => '',
    );
    $databases['sakshi']['default'] = array(
      'driver' => 'mysql',
      'database' => 'test',
      'username' => 'root',
      'password' => '',
      'host' => 'localhost',
      'prefix' => '',
    );
    
  • 并在page.tpl.php中添加了用于测试连接的代码

    <div class="col-lg-3 col-md-3 col-sm-12 col-xs-12 padtop30">
                <h4> DB Connection test </h4>
                <?php 
                try{
                    echo "inside try block";
                    db_set_active('sakshi');
                    $results = db_query("select name from test.user_names where phone = 432323");
                    $records = $results->fetchAll();
                    foreach ($records as $record) {
                      echo $record;
                    }
                }catch(\PDOException $ex){
                    echo "inside catch block";
                    echo $ex;
                }finally{
                    echo "finally block is executed";
                    db_set_active('default');
                }   
                ?>
            </div>
    

    我对Drupal是新手。有谁能帮我这方面的忙。

    虽然根据文档,您建立第二个连接的方式没有问题,但我从未能让它像那样工作。我让它工作的唯一方法是使用以下内容,尽管我同意这似乎没有什么根本性的不同:

    $databases = array (
      'default' => 
        array (
          'default' => 
            array (
              'database' => 'drupal_db',
              'username' => 'root',
              'password' => 'password',
              'host' => 'localhost',
              'port' => '',
              'driver' => 'mysql',
              'prefix' => '',
            ),
        ),
    
      'second_database' =>
        array (
          'default' =>
            array (
               'driver' => 'mysql',
               'database' => 'second_db',
               'username' => 'root',
               'password' => 'password',
               'host' => 'localhost',
               'port' => '',
               'prefix' => '',
            ),
       ),
    );
    
    然后您应该能够执行db\u set\u active(“第二个数据库”)

    “找不到基表或视图:1146 table'test.semaphore'not exist'”消息通常出现在Drupal试图在仍然连接到第二个数据库的情况下执行Druply操作时,因此不要忘记执行db_set_active()将连接返回到Drupal数据库。无需添加“default”,因为默认值是假定的默认数据库

    您应该在获取所需数据后直接执行此操作。因此,在您的示例中,它应该位于
    $records=$results->fetchAll()之后

    或者,如果您只在一个地方/不经常需要此连接,您可以动态设置它。更多信息

    希望这有帮助

    $databases = array (
      'default' => 
        array (
          'default' => 
            array (
              'database' => 'drupal_db',
              'username' => 'root',
              'password' => 'password',
              'host' => 'localhost',
              'port' => '',
              'driver' => 'mysql',
              'prefix' => '',
            ),
        ),
    
      'second_database' =>
        array (
          'default' =>
            array (
               'driver' => 'mysql',
               'database' => 'second_db',
               'username' => 'root',
               'password' => 'password',
               'host' => 'localhost',
               'port' => '',
               'prefix' => '',
            ),
       ),
    );