-1

当具有以下代码的脚本包含到另一个 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();
}
4

3 回答 3

1

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

于 2012-12-16T17:07:56.210 回答
1

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

为了避免重复,看看什么是依赖注入?有关依赖注入的更多信息。

于 2012-12-16T17:14:45.247 回答
0

你可以这样开始:

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

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

于 2012-12-16T17:02:57.023 回答