如何访问Drupal 7 $数据库变量?

时间:2011-05-26 23:16:58

标签: drupal drupal-7

我在node.tpl.php和page.tpl.php中写了一些php / mysql查询。

这些页面用于连接MySQL的用户名和密码在文件中指定。

我希望能够使用Drupal的settings.php文件中定义的MySQL连接设置,而不是这样做。

我正在尝试,将settings.php文件包含在node.tpl.php和page.tpl.php中失败。

<?php include("sites/default/settings.php") ?> 

然后我试图从settings.php访问$ databases数组,如下所示:

$databases['default']['default']['username']

$ databases数组具有以下结构:

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

我的方法不起作用。谁能建议

2 个答案:

答案 0 :(得分:3)

让我数一下你做错的方式。您不会将查询写入模板。决不。因为如果你以后更改外观,你会失去逻辑。将它们放在它们所属的模块中。您不需要包含设置,它已包含在内。您不会编写MySQL查询,因为它们不安全,而是使用http://api.drupal.org/api/drupal/includes--database--database.inc/group/database/7来鼓励(在某些情况下甚至强制执行)安全性。

答案 1 :(得分:1)

与chx所说的一样

  

让我数一下你做错的方式。您不会将查询写入模板。决不。您不包含设置,它已包含在内。您不编写使用的MySQL查询

在你的主题的template.php文件中,你可以访问大多数来自page.tpl.php的变量。使用

hook_preprocess(&$variables, $hook);

然后dump或dsm($ variables); (必须安装devel模块)。

如果确实需要查询数据库,请创建一个小模块,并在.module文件中使用drupal函数来查询数据库。您也不必担心连接到数据库,这是在引导过程中完成的。