新的PDO对象

时间:2012-12-16 17:00:02

标签: php mysql object pdo include

当具有以下代码的脚本包含在另一个php脚本中时会发生什么,它是否每次都创建一个新的PDO对象。??如果是,那么我如何使用在多个PHP脚本中创建一次的单个PDO对象。??我不想使用持久连接..

try{    
    $dsn        =   'mysql:host=localhost;dbname=test'; 
    $username   =   'user';
    $password   =   'password'; 
    $conn = new PDO($dsn, $username, $password);
    $conn ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch(PDOException $e) {
    echo 'ERROR: '. $e->getMessage();
}

3 个答案:

答案 0 :(得分:1)

该脚本将创建一个新的PDO对象,并将其分配给变量$conn。关于这一部分,“如何使用在多个PHP脚本中创建一次的单个PDO对象”,答案是您可以在每个HTTP请求中多次重用$conn变量。您必须为每个请求(网页)创建(至少)一个PDO对象。如果您想在几个不同的PHP脚本中使用该对象,所有这些脚本都是单个网页的一部分,您可能希望将$conn放入$GLOBALS变量中,以便它可以在所有范围内使用和名称空间。

答案 1 :(得分:1)

您可以在整个脚本中使用单例数据库对象,但是这种方法存在一些缺点,因此您可能希望研究“依赖注入”。

为了避免重复,请查看What is dependency injection?以获取有关依赖注入的更多信息。

答案 2 :(得分:0)

你可以这样开始:

if (!isset($conn)) {
  /* Create connection, copy your code */
}

但你应该检查$conn是否有效。
使用比$conn更具体的变量名称(如$global_pdo_connection)并不是一个坏主意,因此它最终不会与另一个$conn混淆。