[英]Querying two databases with PDO
I'm trying to change my queries from mysql to PDO because I need to query at the same time two different databases on different servers. 我试图将查询从mysql更改为PDO,因为我需要同时查询不同服务器上的两个不同数据库。
I've done these classes so far 到目前为止,我已经完成了这些课程
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;
}
}
and then 接着
$db = new Db2;
$sql = "query";
$result = $db->sql_query($sql);
but the query affects only the second database. 但是查询仅影响第二个数据库。
Anyone can help? 有人可以帮忙吗?
Thanks a lot 非常感谢
you had to run your query twice against two databases. 您必须对两个数据库运行两次查询。 don't expect the inheritance to do that for you 不要指望继承能为您做到
$db = new Db2();
$sql = "query";
$result = $db->sql_query($sql);
$db1 = new Db();
$sql = "query";
$result1 = $db1->sql_query($sql);
I don't think you needed another child class, you can easily switch database using : 我认为您不需要其他子类,您可以使用以下命令轻松切换数据库:
USE DATABASENAME
So for example you can do: 因此,例如,您可以执行以下操作:
$db = new Db;
$sql = "query";
$result = $db->sql_query($sql);
$db->sql_query('USE DB2');
$sql2 = "query2";
$result2 = $db->sql_query($sql2);
or perhaps create a function to select db: 或创建一个函数来选择数据库:
function select_db($db) {
$result = PDO::query('USE $db');
return $result;
}
then use it: 然后使用它:
$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.