你好,我是新用的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连接。 的由于
答案 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
对象。