每次使用PDO运行查询时是否必须包含我的数据库连接器文件?

时间:2011-06-03 02:49:29

标签: php mysql pdo

我已将以下内容保存到我的dbConnect.php文件中

$host = 'localhost';
$username = 'root';
$pass = 'mypass';

try {
    $dbh = new PDO("mysql:host=$host;dbname=horh_new", $username, $pass);
} catch (PDOException $e) {
    echo $e->getMessage();
}

在我的脚本中包含此内容的最佳方法是什么?现在,我有一个函数将用户插入到数据库中,它执行以下操作:

function insertUser($username) {
include("dbConnect.php"); // i'd like to not have to include this each time
$query = $dbh->prepare("INSERT INTO users (username) values (?)");

$query->bindParam(1, $username);
$query->execute();
}

显然,我拥有的函数越多,我就越需要包含这个dbConnect.php文件。我是否应该将它包含在具有$ username,$ host和$ pass的私有变量的类中(因此当使用传递给函数的相同变量时没有冲突?

然后在我的脚本的标题中包含一次类而不是在每个函数中?我对PDO很新,所以我想找出最有效的方法。感谢。

1 个答案:

答案 0 :(得分:1)

每次包含该内容时,您都在该函数范围内打开一个新连接。只需将其包含在前端Web文件中,并为每个功能全局建立数据库连接。不要多次包含此文件,否则您将打开更多连接,这会导致不必要的减速。

index.php示例:

<?php
include("dbConnect.php");
include("somefunctions.php");
// more stuff, front-facing web stuff, using stuff in somefunctions.php

somefunctions.php:

<?php
function doSomething()
{
    global $dbh;
    $query = $dbh->prepare("INSERT INTO users (username) values (?)");
   // etc.
}