Я пытаюсь подключиться к нескольким базам данных одновременно, и у меня проблемы. Этот запрос отлично работает с моим локальным сайтом. (Это не имя пользователя или пароль, таким образом «корень, корень.»)Несколько соединений с базой данных с PDO
$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();
}
Но я получаю эти сообщения об ошибках:
Примечание: Неопределенная переменная: PDO в /Applications/MAMP/htdocs/gx/index.php на линии 164
Фатальная ошибка: Вызов к функции члена подготовить() на нуль в /Applications/MAMP/htdocs/gx/index.php на линии 164
И это строка 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 и выполняете запросы. –