【问题标题】:Is it ok to define PDO db connection in function?可以在函数中定义 PDO db 连接吗?
【发布时间】:2014-01-31 11:54:04
【问题描述】:

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

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

现在我可以在任何需要functions.php文件的地方调用它一次,通过返回

$db = connect_db();

然后是下面的任何语句。

安全吗?

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

 $db = NULL;

显然行不通。

【问题讨论】:

    标签: php database function pdo connection


    【解决方案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 作为起点。

    【讨论】:

    • 为了关闭连接,这个变量 $pdo 没有在函数中定义是不是错字?
    • @grab 我的$pdo 等同于您的$db - 我只是使用了不同的变量名,很抱歉造成混淆。
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 2012-02-20
    • 2015-08-04
    • 2016-12-09
    • 2016-04-15
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多