【问题标题】:How can I have access to the Drupal 7 $database variable?如何访问 Drupal 7 $database 变量?
【发布时间】:2011-05-26 23:16:57
【问题描述】:

我在 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' => '',
                                ),
                        ),
              );

我的方法不起作用。谁能推荐一下

【问题讨论】:

    标签: drupal drupal-7


    【解决方案1】:

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

    【讨论】:

    • 如果你真的建议做什么而不是仅仅批评它可能会很有用。但是,是的,以上所有内容仍然正确。
    • 鉴于没有要解决的实际问题,除了指出 Drupal 的数据库 API 之外,我该如何提出更合适的解决方案?
    • 你没有解释为什么它不好,也没有说明该怎么做。没有什么比找到适用于您的用例的问题更令人沮丧的了,但答案几乎没有说明。提供链接固然很好,但对于经验不足的人(尤其是考虑到它的 Drupal)来说,它几乎没用。当然,我可以看到您可能不想花费不必要的时间来深入解释您的答案,但只需一点指导就可以非常有助于指出正确的方向。
    【解决方案2】:

    随着 chx 所说的

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

    在您主题的template.php 文件中,您可以访问page.tpl.php 中的大部分变量。使用

    hook_preprocess(&$variables, $hook);
    

    然后转储或dsm($variables); (必须安装开发模块)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多