簡體   English   中英

使用PDO查詢兩個數據庫

[英]Querying two databases with PDO

我試圖將查詢從mysql更改為PDO,因為我需要同時查詢不同服務器上的兩個不同數據庫。

到目前為止,我已經完成了這些課程

class Db extends PDO {

    public $db;

    public function __construct($dbhost = 'host1', $dbname = 'db1', $dbuser = 'user1', $dbpass = 'user2', $dbtype = 'mysql') {
        PDO::__construct($dbtype . ':host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
    }

    function sql_query($sql) {
            $result = PDO::query($sql);

        return $result;
    }

    function sql_fetcharray($result) {
            $rs = $result->fetch(PDO::FETCH_ASSOC);

            return $rs;
    }

    function sql_numrows($result) {
            $rs = $result->rowCount();

        return $rs;
    }   
}

class Db2 extends Db {

    public $db;

    public function __construct($dbhost = 'host2', $dbname = 'db2', $dbuser = 'user2', $dbpass = 'pass2', $dbtype = 'mysql') {
        PDO::__construct($dbtype . ':host=' . $dbhost . ';dbname=' . $dbname, $dbuser, $dbpass);
    }

    function sql_query($sql) {
        parent::sql_query($sql);

        $result = PDO::query($sql);

        return $result;
    }

    function sql_fetcharray($result) {
        $rs = $result->fetch(PDO::FETCH_ASSOC);

        return $rs;
    }

    function sql_numrows($result) {
        $rs = $result->rowCount();

        return $rs;
    }   
}

接着

$db = new Db2;
$sql = "query";
$result = $db->sql_query($sql);

但是查詢僅影響第二個數據庫。

有人可以幫忙嗎?

非常感謝

您必須對兩個數據庫運行兩次查詢。 不要指望繼承能為您做到

$db = new Db2();
$sql = "query";
$result = $db->sql_query($sql);


 $db1 = new Db();
 $sql = "query";
 $result1 = $db1->sql_query($sql);

我認為您不需要其他子類,您可以使用以下命令輕松切換數據庫:

USE DATABASENAME

因此,例如,您可以執行以下操作:

$db = new Db;
$sql = "query";
$result = $db->sql_query($sql);
$db->sql_query('USE DB2');
$sql2 = "query2";
$result2 = $db->sql_query($sql2);

或創建一個函數來選擇數據庫:

function select_db($db) {
    $result = PDO::query('USE $db');
    return $result;
}

然后使用它:

$db = new Db;
$sql = "query";
$result = $db->sql_query($sql);
$db->select_db('DB2');
$sql2 = "query2";
$result2 = $db->sql_query($sql2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM