2011-05-26 11 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函數來查詢數據庫。您也不必擔心連接到數據庫,這是在引導過程中完成的。