4

こんにちは、MYSQL を使用した PDO は初めてです。ここに私の 2 つのファイルを示します 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) 製品.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に接続する方法はありますか。 ありがとう

4

3 に答える 3

5
  1. pdo.phpここから取得。人々は多くの重要な接続オプションを見落としがちなので、PDO と適切に接続する方法を説明する専用の記事を書かなければなりませんでした

  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'];
     }
    

また、require を手動で呼び出す代わりに、クラスのオートローディングを実装することをお勧めします。

于 2013-10-05T10:21:05.343 に答える
2

これを行う最も簡単な方法は、「database.php」のような別のファイルでデータベース接続を行うことです。その後、作成するすべての新しいページにこのファイルを含めることができます...たとえば、「dothis.php」のようなページを作成する場合".次に、dothis.php ページの上部にステートメントを記述します。そうすれば、ファイル全体でオブジェクトを好きな場所でinclude_once ('/path/to/your/file/database.php'); 使用できます。$db

于 2013-10-05T06:44:57.943 に答える
0

できることは、PHP ファイルを作成することです。たとえば、「pdoconn.php」としましょう。そのファイルで、その$dbオブジェクトを準備します。最後に、PHP ファイルごとに、pdoconn.php最初にインクルードします。したがって、PHP ファイルがロードされている間、最初に MySQL に接続し、$dbオブジェクトを提供します。

于 2013-10-05T06:34:02.617 に答える