我正在尝试同时连接到多个数据库并遇到问题。此查询适用于我的本地站点。 (它没有用户名或密码,因此是“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();
}
但我收到这些错误消息:
注意:未定义变量:第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;
答案 0 :(得分:2)
您尝试从未定义的对象调用函数。在您的情况下,您在$db1
和$db2
上创建了两个PDO实例。
下面的几行,您尝试从名为prepare
的变量调用$pdo
函数。但是在您向我们展示的代码中,$pdo
变量并不存在。
因此,您需要做的是更改$pdo
变量或$db1
变量的$db2
变量。取决于您要使用的连接。像这样:
$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