2014-03-27 58 views
0

我需要建立一个连接到数据库并在我的PHP文件中的任何地方使用它。我了解包括,但也许我不完全。如果我使用连接到数据库的功能创建PHP文件并为其留下一个变量,那么将该文件包含在2个PHP文件中。会有2个连接吗?我怎样才能建立一个连接并在任何地方使用变量?包括和MySQL

另请注意,我打算使用PDO,如果您提供PDO语法的帮助,会更好。

+0

只要每个PHP文件只包括连接文件一次,然后它不会创建另一个实例的变量,但我想象你的PHP文件会声明像$ db = connection这样的变量,所以我们被覆盖的变量 – Sephedo

+0

每次包含PHP文件或只允许访问变量时,它会建立一个新的连接吗?这是我真正的问题。 – user3466209

+1

是的,每次脚本结束时变量都会随着它一起结束 - 连接也是如此,因此当新页面被访问时它将会断开连接并创建一个新连接,除非您将连接存储在会话或cookie中,但我不建议这样做 – Sephedo

回答

1

无论页面加载中包含多少个php文件,每次加载时数据库都会连接。

因此,您可以将连接数限制为每页加载一个。

为了做到这一点,您可以创建一个连接文件,包含沿着线的东西:

$user = 'database_username'; 
$pass = 'a_Hard_Password'; 
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 

然后,您将保存文件,并将其命名为像db.php或类似的东西。

然后,在哪个文件需要使用数据库,将包括文件一次利用require_once如下:

require_once 'db.php'; 

$results = $db->query('SELECT * FROM my_table'); 
foreach($results AS $row) { 
    var_dump($row); 
} 

有很多很好的资源,在那里,这是简单的例子,但是对于更复杂的查询,的PDO的优点之一是绑定参数,如下所示:

$id = 5; // Or some other useful value 
$name = 'James'; // Or your desired query value 
$stmt = $db->prepare("SELECT * FROM my_table WHERE id=? AND name=?"); 
$stmt->execute(array($id, $name)); 
$results = $stmt->fetchAll(PDO::FETCH_ASSOC); 
foreach($results AS $row) { 
    // The PDO::FETCH_ASSOC parameter tells it to return an associative array... 
    echo $row['id']; 
    echo $row['name']; 
    // ... etc ... 
}