2017-06-27 23 views
1

この例のようにセカンダリデータベースに接続しようとしましたが、なぜ動作しないのかわかりません。何か案が?Mysqlの複数のデータベース接続が機能しない

私は、各データベース接続が適切に動作することを述べています。私は、ログファイルに取得

$db_HOST = "localhost"; 
$db_USER = "db_user"; 
$db_PASS = "db_pass"; 
$db_NAME1 = "db_test1"; 
$db_NAME2= "db_test2"; 

$db_LINK1 = mysql_connect($db_HOST, $db_USER, $db_PASS) or die("Technical revision. Please try again later!"); 
mysql_select_db($db_NAME1, $db_LINK1) or die("Couldn't select database"); 

$db_LINK2 = mysql_connect($db_HOST, $db_USER, $db_PASS, true) or die("Technical revision. Please try again later!"); 
mysql_select_db($db_NAME2, $db_LINK2) or die("Couldn't select database"); 

エラー:

PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /config/global/variables.php on line 27 

PHP Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in config/global/hello.php on line 3 

ありがとうございます!

+0

どうしたらうまくいかないのですか?あなたはどんなエラーを出していますか? –

+3

PDOを使用すると、mysql_connectは非推奨です。 https://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php – Blackbam

+0

「作業を拒否する」を定義します。 *実際のエラーは何ですか? – David

答えて

0

を代わりに後者のようにmysql_connectのPDOが推奨されていません)、次の操作を行います。ここでは

$db_HOST = "localhost"; 
$db_USER = "db_user"; 
$db_PASS = "db_pass"; 
$db_NAME1 = "db_test1"; 
$db_NAME2= "db_test2"; 

try { 
    $db_LINK1 = new PDO('mysql:host='.$db_HOST.';dbname='.$db_NAME1, $db_USER, $db_PASS); 
    foreach($db_LINK1->query('SELECT * from FOO') as $row) { 
     print_r($row); 
    } 
    $dbh = null; 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 

try { 
    $db_LINK2 = new PDO('mysql:host='.$db_HOST.';dbname='.$db_NAME2, $db_USER, $db_PASS); 
    foreach($db_LINK2->query('SELECT * from FOO') as $row) { 
     print_r($row); 
    } 
    $dbh = null; 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 

さらに詳しい情報:php.net/manual/en/pdo.connections.php

を2番目の接続が失敗した場合は、正確なエラーメッセージを確認してください。

+0

こんにちは。私はちょうどあなたのコードを実装しようとしましたが、私は今この場合FOOを意味するものではありません。ユーザーのSQLテーブルまたは何かすることができますか? – Adrian

+0

FOOは、テーブル名の単なるプレースホルダです。 – Blackbam

0

実際にPDOを使用する必要がありますが、db selectでリンクを使用する場合はコードが機能します。たとえば、

$db1 = mysql_connect($hostname, $username, $password); 
$db2 = mysql_connect($hostname, $username, $password, true); 

mysql_select_db('database1', $db1); 
mysql_select_db('database2', $db2); 

などがあります。すべてのリンクで使用するデータベースを選択するのを忘れてしまった。

0

I thnk問題が見つかりました。 すべてのクエリaccordindを新しい複数の接続に変更するのを忘れました。 LE:解決しました!皆さん、ありがとうございました!

+0

まだあなたはpdoを使うべきです... ^^ – Blackbam

+1

@Blackbamはい、そうです。あなたのPDOコードの例を実装しようとします。あなたのためにありがとうございました:) – Adrian

関連する問題