Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用PDO的多个数据库连接_Php_Mysql_Pdo - Fatal编程技术网

Php 使用PDO的多个数据库连接

Php 使用PDO的多个数据库连接,php,mysql,pdo,Php,Mysql,Pdo,我试图同时连接多个数据库,但遇到问题。此查询适用于我的本地站点。(它没有用户名或密码,因此“root,root.” 我将其用作创建多数据库查询的指南。我用以下代码替换了上面的所有代码: try { $db1 = new PDO('mysql:dbname=gbase;host=localhost', 'root', 'root'); $db2 = new PDO('mysql:dbname=glife;host=localhost', 'root', 'root'); } catch (PD

我试图同时连接多个数据库,但遇到问题。此查询适用于我的本地站点。(它没有用户名或密码,因此“root,root.”

我将其用作创建多数据库查询的指南。我用以下代码替换了上面的所有代码:

try {
 $db1 = new PDO('mysql:dbname=gbase;host=localhost', 'root', 'root');
 $db2 = new PDO('mysql:dbname=glife;host=localhost', 'root', 'root');
} catch (PDOException $ex) {
  echo 'Connection failed: ' . $ex->getMessage();
}
但我收到了以下错误消息:

注意:未定义变量:第164行/Applications/MAMP/htdocs/gx/index.php中的pdo

致命错误:在第164行的/Applications/MAMP/htdocs/gx/index.php中调用null上的成员函数prepare()

这是第64行:

$stm = $pdo->prepare("SELECT A.Site, A.URL, A.Title, A.Article
 FROM 1_about A
我怀疑我需要以某种方式将新代码与原始代码集成,而不是简单地替换它。然而,我不明白发生了什么。有人能告诉我写多数据库查询的正确方法吗

编辑:下面是我正在使用的全部代码。

try {
 $db1 = new PDO('mysql:dbname=geobase;host=localhost', 'root', 'root');
 $db2 = new PDO('mysql:dbname=geolife;host=localhost', 'root', 'root');
} catch (PDOException $ex) {
 echo 'Connection failed: ' . $ex->getMessage();
}

$stm = $pdo->prepare("SELECT A.Site, A.URL, A.Title, A.Article
 FROM 1_about A
 WHERE A.Site = 'g1' AND A.URL = 'webranger'");
$stm->execute(array(
 // 'MyURL'=>'%'.$MyURL.'%'
));

while ($row = $stm->fetch())
{
 $Article = $row['Article'];
}

echo $Article;

您正在尝试从未定义的对象调用函数。在您的案例中,您在
$db1
$db2
上创建了两个PDO实例

在下面的一些行中,您正试图从名为
$pdo
的变量调用
prepare
函数。但是在您展示给我们的代码中,
$pdo
变量不存在

因此,您需要做的是为
$db1
变量或
$db2
变量更改
$pdo
变量。取决于要使用的连接。像这样:

$stm = $db1->prepare("SELECT A.Site, A.URL, A.Title, A.Article
 FROM 1_about A
 WHERE A.Site = 'g1' AND A.URL = 'webranger'");

就这样D

所以您分别将
$pdo
更改为
$db1
$db2
。。。改用这些吗?是的,实际上变量名是错误的。如果只是输入错误,请显示所有代码,或者至少显示创建PDO实例和执行查询的部分。是的,实际上变量名是错误的。如果只是输入错误,请显示所有代码,或者至少显示创建PDO实例和执行查询的部分。var
$PDO
来自何处?@Vitor Luis-我编辑了我的帖子,在末尾粘贴了完整的代码。@Robbie和RamRaider-我不知道在哪里或如何插入$pdo。用$pdo替换$db1和$db2是没有意义的(至少对我来说是这样)。现在我得到了错误“注意:第177行的/Applications/MAMP/htdocs/gx/index.php中的未定义变量:Article”,但这可能只是一个我可以修复的简单错误。不过,还有一个问题——如果我需要同时从两个不同的数据库查询表,该怎么办?例如,假设我想将Database1中的一个表与Database2中的一个表连接起来?我以前从未尝试过,但我认为可以将数据库的名称放在表名的前面,如:
Database1.table1
Database2.table2
好的,这很有意义。
$stm = $db1->prepare("SELECT A.Site, A.URL, A.Title, A.Article
 FROM 1_about A
 WHERE A.Site = 'g1' AND A.URL = 'webranger'");