如何在不同文件中使用 PDO 连接对象[重复]
Posted
技术标签:
【中文标题】如何在不同文件中使用 PDO 连接对象[重复]【英文标题】:how to use PDO connection object in different files [duplicate] 【发布时间】:2013-10-12 05:50:46 【问题描述】:您好,我是 mysql 的 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 prdinfofunction 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 连接起来。 谢谢
【问题讨论】:
【参考方案1】:pdo.php
,取自here。人们经常忽略许多重要的连接选项,所以我不得不写一篇专门的文章来解释如何正确连接 PDO
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();
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'];
实现类自动加载而不是手动调用 require 也是一个好主意。
【讨论】:
【参考方案2】:最简单的方法是在单独的文件中进行数据库连接,例如“database.php”,然后您可以在您正在创建的每个新页面上包含此文件...例如,如果您正在创建一个类似“ dothis.php"。然后在 dothis.php 页面的顶部写一个声明include_once ('/path/to/your/file/database.php');
那么您可以在整个文件中的任意位置使用您的 $db
对象。
【讨论】:
【参考方案3】:您可以做的是创建一个 PHP 文件,比如说“pdoconn.php”。在该文件中,准备 $db
对象。最后,对于您的每个 PHP 文件,只需首先包含 pdoconn.php
。因此,当您的 PHP 文件被加载时,它们会首先连接到 MySQL 并为您提供 $db
对象。
【讨论】:
以上是关于如何在不同文件中使用 PDO 连接对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章