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

MYSQLで同一サーバ、同一ユーザにて、複数のデータベースを使用したい。
複数台のマシンで稼働してたDBを、1台のマシンのDBサーバにまとめたのです。

$con1 = mysql_connect ( $server , $user , $password) ;
mysql_select_db( $database1, $con1) ;
$con2 = mysql_connect ( $server , $user , $password) ;
mysql_select_db( $database2, $con2) ;

素人考えで上記のようにに記述すると、$con1はdatabase1への接続でなく、database2への接続になってしまいます。
どうしてなのでしょうか?また、こういう場合、どう対応してらっしゃいますか?

●質問者: torijun
●カテゴリ:コンピュータ インターネット
✍キーワード:dB MySQL password USER サーバ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ffmpeg
●10ポイント

http://bg.pi-ppi.com/page/n01/000143.html

◎質問者からの返答

当該ページも調べました。

コマンドは理解できているんで、そのページの内容は理解できます。

つまり、SQL発行ごとにmysql_connect?mysql_closeをしなさい、ってことですか?

理由はもうすこしPHP/MySQLの仕様的なところの気がしてます。

なお、申し遅れました。環境はこれです。

mysql> select version();

| 4.1.14-standard-log |

# php -version

PHP 4.4.0 (cli) (built: Jan 23 2006 21:19:17)


2 ● KID the Euforia
●40ポイント

以下はPHPマニュアル(http://www.php.net/manual/ja/function.mysql-connect.php)からの抜粋です。

mysql_connect

(PHP 4, PHP 5, PECL mysql:1.0)

mysql_connect ― MySQL サーバへの接続をオープンする

説明

resource mysql_connect ( [string $server [, string $username [, string $password [, bool $new_link [, int $client_flags]]]]] )

(中略)

new_link

同じ引数で 2 回 mysql_connect() をコールした場合、 2 回目は新規のリンクが確立されるのではなく、代わりにすでにオープンされた リンクのリンク ID が返されます。 パラメータ new_link はこの動作を変更し、既に mysql_connect() が同じパラメータでコールされて いる場合でも常に新規のリンクがオープンされるようにします。 SQL セーフモード の場合はこのパラメータは無視されます。

とあるので、この引数new_linkをtrueにして与えてやればいいような気がします。

◎質問者からの返答

うっかりマニュアル読み飛ばしてました。。。

これでいけそうですね。ありがとうございます!


3 ● kazukichop
●40ポイント

以下のリンク(PHPマニュアル)のnew_linkの項を見てください。

http://jp.php.net/manual/ja/function.mysql-connect.php

同じ引数で2回mysql_connect()をコールした場合、2回目は新規のリンクが確立されるのではなく、代わりにすでにオープンされたリンクのリンクID が返されます。パラメータnew_linkはこの動作を変更し、既にmysql_connect()が同じパラメータでコールされている場合でも常に新規のリンクがオープンされるようにします。 SQLセーフモードの場合はこのパラメータは無視されます。

とありますので、

$con1 = mysql_connect($server, $user, $password, true);
mysql_select_db( $database1, $con1);
$con2 = mysql_connect($server, $user, $password, true);
mysql_select_db($database2, $con2);

とすれば意図された動作をすると思います。

◎質問者からの返答

ありがとうございます!

デフォルトでtrueにしておけばいいのに、、、

と思ってしまいます。

関連質問


●質問をもっと探す●



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