2011-05-26 96 views
1

我已经在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['default']['default']['username'] 

的$数据库阵列具有这样的结构:

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

我的做法是不加工。任何人都可以建议

回答

3

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

+1

如果你真的建议做什么而不是仅仅批评,这可能会很有用。但是,是的,以上所述依然如此。 – 2014-04-25 11:11:35

+0

鉴于没有*实际问题需要解决,除了指出Drupal的数据库API之外,我怎么能建议更合适的解决方案? – chx 2014-04-26 13:30:55

+1

你不会解释_why_它的坏处,也不会指出要做什么。没有比找到适用于您的用例的问题更令人沮丧的了,但答案几乎没有说明什么。给链接一切都很好,但对于经验不多的人(尤其是考虑其Drupal),它几乎是无用的。当然,我可以看到,你可能不想花费不必要的时间来写出对你答案的深入解释,但只要一点点的指导可能对指出一些正确的方向非常有帮助。 – 2014-04-28 13:07:02

1

随着什么CHX说

让我算你正在做这个错误的方式。您不会将查询写入模板。决不。您不包括设置,它已包含在内。你不写你使用的MySQL查询

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

hook_preprocess(&$variables, $hook); 

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

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