将 2 个火鸟数据库与 PDO 链接



简短摘要。我有 2 个数据库(Invoices.gdb 和 Users.gdb(我想得到一个表格,我可以在其中查看哪个发票链接到客户供您参考:我知道将我的值放入表中的 PHP 代码。我正在努力在 2 个数据库之间正确获取链接以及如何执行此查询。

我的PDO类(目前仅包含1个连接(

class DatabasePDO{
    /** @var PDO */
    private static $dbh;
    static function getInstance(){
        $str_conn="firebird:host=localhost;dbname=C:/Users/Desktop/USERS.GDB;charset=UTF8";
        try{
            self::$dbh = new PDO($str_conn, "username", "password");
        }
        catch(PDOException $e){
            echo "Error!: ".$e->getMessage();
            die();
        }
        return self::$dbh;
    }

那只是为了获得我的用户(而且它有效(。如何添加我的发票数据库?

这是我的课

public static function getInvoices() {
        $conn = DatabasePDO::getInstance();
        $sql = "select * from users.customers as A , invoices.invoice as B
                where a.customers.customerid = b.invoice.customerid";
        $st = $conn->prepare($sql);
        $st->execute();
        $list = array();
        while ( $row = $st->fetch() ) {
            $invoice= new invoice( $row );
            $list[] = $invoice;
        }
        $conn = null;
        return $list;
    }

我想做的查询如下:

select * from users.customers as A , invoices.invoice as B
where a.customers.customerid = b.invoice.customerid

我无法将 2 个数据库合并在一起。所以这不是解决方案。提前感谢!

Firebird 数据库是隔离的,您无法在数据库之间联接。最好的解决方案是将两个数据库合并为一个(这也将具有完整性检查(如外键约束等(的额外好处(。

第二种最好的方法是在发票数据库中拥有用户数据库(或至少是所需的表(的副本。然后,您需要将用户中的更改同步到发票(例如,使用触发器和EXECUTE STATEMENT ON EXTERNAL,或计划到作业来执行同步(。

否则,您将不得不在代码中手动连接,这远非最佳。

最新更新