PHPとMySQLでサイトを制作しています。

データベースを選択するときに、

$connect = mysql_connect( 'localhost','ユーザー名','パスワード' );
mysql_select_db( 'データベース名',$connect )

上記のような形で指定しているのですが、同じローカルホスト内にある違うデータベースを二つ選択するときはどのようにしたらよいのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2006/06/21 16:55:22
  • 終了:2006/06/27 22:28:15

回答(5件)

id:tadashi0805 No.1

tadashi0805回答回数287ベストアンサー獲得回数292006/06/21 17:16:46

ポイント20pt

・mysql_connectを2回callし、結果を別々の変数で受けて、各データベース名それぞれでmysql_select_dbをcallする

・mysql_select_dbは使わず、クエリのfrom区はデータベース名.テーブル名の形式を使う

のどちらかかと。

id:black_kenchan

どちらの方が良いのでしょうか?

2006/06/21 17:25:43
id:tadashi0805 No.2

tadashi0805回答回数287ベストアンサー獲得回数292006/06/21 17:36:51

ポイント20pt

使用する資源(ソケット接続、変数のメモリ等)の面で考えると、後者の方が少なくて済むので、前者よりはいいかと思います。

前者だと、同じMySQLに接続してるのに、接続が2本いりますからね。

ただ、デメリットとして、全てのクエリでデータベース名を指定しなければなりません。

id:Chiether No.3

Chiether回答回数40ベストアンサー獲得回数12006/06/21 18:50:35

ポイント20pt

使い方次第だと思います。

例えば、別DBのテーブルと結合したいというのであれば完全にmysql_select_dbを捨てる必要もなく

メイン(よく使う)データベースを選択。必要に応じて……

 

select

 a.untara,...

from

 hogehoge.table1 as a,

 mogemoge.table2 as b,...

where

 (省略)

 

とすればいいですし、まったく結合される事のないデータを扱う場合は

わざとコネクションを2つ張ります。「分けて考えるモノなんだ」というのが分かるように。

と、マイルールを決めてもグータラな私はチョチョと1回だけSELECTが走る程度ならば

コネクションを分けずにやってしまいます。ソースコメント付けて。

 

 

=== 以下、MYSQL公式リファレンスより抜粋 ===

テーブルは(カレントデータベース内のものなら)tbl_name として参照できる。

データベースを明示的に指定する場合は、dbname.tbl_name として参照する。

カラムは、col_name、tbl_name.col_name、または db_name.tbl_name.col_name として参照できる。

 

 

あ。そうだ。 mysql以外に移植される可能性を考えるなら

db_name.tbl_name は 使わないようにしてください。 mysqlの依存モノなので。

id:m-nisi No.4

m-nisi回答回数159ベストアンサー獲得回数32006/06/21 23:21:53

ポイント20pt

私はDB接続に関する事はオブジェクトとして記述してるので、

前者の方法になります。

コネクトが増えても、毎回データベース名を記述する方が

労力が大きいと思いますので。

id:ito-yu No.5

ito-yu回答回数323ベストアンサー獲得回数142006/06/22 14:23:29

ポイント20pt

私はmysqlも使いますがpostgresqlもsqliteも使うので、どのDBMSでも同じ手法で扱いたいため、別のコネクションを作るようにしています。あ、というか、PEAR::DB使ってます。

$db1 = DB::connect($dsn1);

$db2 = DB::connect($dsn2);

$dsn1、$dsn2にはデータベース名まで指定しますので。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません