簡體   English   中英

與PDO的多個數據庫連接

[英]Multiple database connections with PDO

我正在嘗試同時連接到多個數據庫,並且遇到了問題。 該查詢在我的本地站點上運行良好。 (它沒有用戶名或密碼,因此沒有“ 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);

我使用此討論作為創建多數據庫查詢的指南。 我用以下代碼替換了上面的所有代碼:

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中,對成員函數prepare()的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;

您試圖從未定義的對象調用函數。 根據您的情況,您在$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM