当具有以下代码的脚本包含在另一个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();
}
答案 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
混淆。