【发布时间】:2016-04-02 19:54:02
【问题描述】:
我正在尝试同时连接到多个数据库,但遇到了问题。此查询适用于我的本地站点。 (它没有用户名或密码,因此是“root,root”。)
$dsn = "mysql:host=localhost;dbname=gbase;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'root','root', $opt);
我使用this discussion 作为创建多数据库查询的指南。我用这个替换了上面的所有代码:
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();
}
但我收到以下错误消息:
注意:未定义变量:/Applications/MAMP/htdocs/gx/index.php 第 164 行中的 pdo
致命错误:在第 164 行的 /Applications/MAMP/htdocs/gx/index.php 中调用一个成员函数 prepare() on null
这是第 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;
【问题讨论】:
-
所以您已将
$pdo分别更改为$db1和$db2...改用它们? -
是的,其实变量名是错误的。如果只是一个错字,请显示所有代码,或至少显示您创建 PDO 实例并执行查询的部分。
-
是的,其实变量名是错误的。如果只是一个错字,请显示所有代码,或至少显示您创建 PDO 实例并执行查询的部分。
-
var
$pdo来自哪里? -
@Vitor Luis - 我编辑了我的帖子,在最后粘贴了完整的代码。 @ Robbie 和 RamRaider - 我不明白在哪里或如何插入 $pdo。用 $pdo 替换 $db1 和 $db2 没有意义(至少对我来说)。