【问题标题】:Link 2 Firebird databases with PDO使用 PDO 链接 2 个 Firebird 数据库
【发布时间】:2017-02-08 11:17:20
【问题描述】:

简短的总结。我有 2 个数据库(Invoices.gdb 和 Users.gdb) 我想获得一张表格,我可以在其中查看哪个发票与哪个客户相关联 供您参考:我知道将我的值放入表中的 PHP 代码。我正在努力在 2 个数据库之间找到我的 LINK 以及如何执行此查询。

我的 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 还是 Interbase?它们不是一回事。
  • 火鸟,对不起。会改变问题

标签: php pdo firebird


【解决方案1】:

Firebird 数据库是隔离的,您不能在数据库之间加入。最好的解决方案是将您的两个数据库合并为一个(这还具有额外的好处,例如外键约束等完整性检查)。

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

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

【讨论】:

  • 我不能简单地将 2 个数据库合并在一起,因为它们是为 2 个单独的程序 (exe) 制作的。是否可以创建一个单独的 mysql 数据库,在其中存储所有需要的数据并从那里获取数据?
  • @Steve 他们为不同的程序创建的事实并不意味着您不能将数据放在单个数据库中。此外,将数据迁移到 MySQL 会比合并数据库或将数据复制/复制到其他数据库更简单。
  • 有可能。然而,这两个数据库每天都在更新。所以必须找到一个解决方案来保持最新
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 2017-11-29
  • 2012-12-30
相关资源
最近更新 更多