2014-01-31 61 views
1

我在想,在函數中使用db連接將其返回到項目中的任何位置是否安全並確定?如果我想重複使用這個項目來構建另一個項目,我只能在這個函數中更改db連接,並且我不需要遍歷腳本搜索和更改連接參數。可以在函數中定義PDO db連接嗎?

function connect_db(){ 
$db = new PDO('mysql:host=localhost;dbname=;charset=utf8', '', ''); 
return $db; 
} 

現在我的functions.php是必需的文件一次,通過返回

$db = connect_db(); 

,然後無論語句後面的任何地方調用它。

它是否安全?

以及如何在頁面末尾像這樣關閉連接?

$db = NULL; 

顯然不起作用。

回答

1

是的,安全並可以有一個地方創建一個連接到您的數據庫。我會改變你的函數只是有點,但:

<?php 
function connect_db(){ 
    try{ 
     return new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES utf8')); 
    }catch (PDOException $e){ 
     echo '<p>Error connecting to database! ' . $e->getMessage() . '</p>'; 
     die(); 
    } 
} 
?> 

你可以閱讀更多有關documentation PDO構造。

而要close the PDO connection創建這樣你就確實只是:

<?php 
$pdo = NULL; 
?> 

請注意,真的是有很多更要在這個問題上說。理想情況下,您將擁有一個處理PDO對象創建的類。您可能想從Gordon開始看看this excellent answer

+0

用於關閉連接這個變量$ pdo沒有在函數中定義是一個錯字? – grab

+0

@grab我的'$ pdo'等同於你的'$ db' - 我只是使用了一個不同的變量名,對於混淆感到抱歉。 –