如何在不同的文件中使用PDO连接对象

时间:2013-10-05 06:11:24

标签: php mysql oop pdo

你好,我是新用的MOSQL PDO,这是我的两个文件   1)index.php

require_once 'prd.php';
try{
    $db = new PDO ('mysql:host=xxxx;dbname=xxx;charset=utf8', 'xxx', 'xxxx');
    echo 'connectd';
}catch(PDOException $conError){
    echo 'failed to connect DB' . $conError->getMessage ();
}
$conn = new prdinfo();
$conn->con($db);

2)product.php

class prdinfo{function con($db){
    try{
        foreach($db->query("select * from products where vendor_id = 2" ) as $row){
            $prod_id = $row ['product_id'];
            echo '<br/>' . $prod_id;
        }
    }catch(PDOException $ex){
        echo 'an error occured' . $ex->getMessage();
    }
}
}

我的问题在这里我可以将连接对象传递给每个文件,但是我有很多文件要使用数据库查询,所以我需要将$ bd传递给所有文件。这会给代码带来负担。有没有办法将数据库与PDO连接。 的由于

3 个答案:

答案 0 :(得分:4)

1)pdo.php,仅限三行:

<?
$pdo = new PDO ('mysql:host=xxxx;dbname=xxx;charset=utf8', 'xxx', 'xxxx');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

2)product.php

<?php

class prdinfo{

    function __construct($db)
    {
        $this->db = $db;
    }

    function getVendor($vendor)
    {
        $sql = "select * from products where vendor_id = ?";
        $stm = $this->db->prepare($sql);
        $stm->execute(array($vendor));
        return $stm->fetchAll();
    }
}

3)index.php

<?php
require 'pdo.php';
require 'product.php';

$info   = new prdinfo($pdo);
$vendor = $info->getVendor(2);
foreach ($vendor as $row)
{
    echo $row['product_id'];
}

答案 1 :(得分:1)

最简单的方法是在单独的文件中执行数据库连接,例如“database.php”,然后您可以在要创建的每个新页面上包含此文件...例如,如果您要创建类似的页面, dothis.php“。然后在你的dothis.php页面的顶部写一个声明include_once ('/path/to/your/file/database.php'); 然后你可以在任何你想要的地方使用你的$db对象。

答案 2 :(得分:0)

你可以做的是创建一个PHP文件,比如'pdoconn.php'。在该文件中,准备$db个对象。最后,对于每个PHP文件,首先只包括pdoconn.php。因此,在加载PHP文件时,它们将首先连接到MySQL并为您提供$db对象。