人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPとMySQLでサイトを制作しています。
データベースを選択するときに、

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

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

●質問者: black_kenchan
●カテゴリ:ウェブ制作
✍キーワード:CONNECT localhost MySQL PHP サイト
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● tadashi0805
●20ポイント

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

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

のどちらかかと。

◎質問者からの返答

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


2 ● tadashi0805
●20ポイント

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

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

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


3 ● Chiether
●20ポイント

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

例えば、別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の依存モノなので。


4 ● m-nisi
●20ポイント

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

前者の方法になります。

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

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


5 ● ito-yu
●20ポイント

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ