我在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' => '',
),
),
);
我的方法不起作用。谁能建议
答案 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函数来查询数据库。您也不必担心连接到数据库,这是在引导过程中完成的。