可以在函数中定义PDO数据库连接吗?

时间:2014-01-31 11:54:04

标签: php database function pdo connection

我在想,在函数中使用db连接将它返回到项目的任何位置是否安全且可以?如果我想重用这个项目来构建另一个项目,我只能在这个函数中更改数据库连接,而且我不需要遍历脚本搜索和更改连接参数。

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

现在我可以在任何地方调用它。通过返回

,只需要一次.php文件
$db = connect_db();

然后是随后的任何陈述。

可以安全吗?

如何在页面末尾关闭这样的连接?

 $db = NULL;

显然不起作用。

1 个答案:

答案 0 :(得分: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对象创建的类。您可能需要查看this excellent answer中的Gordon作为开始的地方。