
1.タイトルの通り、同時に開くことができますでしょうか?
日本PHPユーザー会ホームページでは以下の方法でできるとの回答があります。
$con1 = mysql_connect(localhost, user_id , pass);
$con2 = mysql_connect(localhost, user_id , pass);
mysql_select_db("db1",$con1);
mysql_select_db("db2",$con2);
========================================
db1
user_table
user_id(int),user_name(var)
==========================================
db2
main_table
main_id(int),user_id(int)
========================================
$sql_user_name = "SELECT user_name FROM user";
$result_user = mysql_query($sql_user_name,$con1);
$row_user = mysql_fetch_array($result_user);
echo $row_user[user_name];
のようにやっても
mysql_fetch_array()がでます。
mysql_queryは最後の接続を活かすとなっているのでこの部分の書き方を教えてください。
2.できたとしてリレーションを行うことができますでしょうか?
つまり
$sql_user_name = "SELECT user_name FROM db1.user_table,db2.main_table WHERE db1.user_table.user_id = db2.main_table.user_id"
というようなことはできますでしょうか?
長文で申し訳ありませんが、どうかよろしくお願いします。
No.3ベストアンサー
- 回答日時:
同じMysqlでやるのでしたら、
まず接続IDが二つのDBの接続権限(と言うかselect権限)がついているかを確認してください。
で、あとは質問文の通り、
$sql_user_name = "SELECT user_name FROM db1.user_table,db2.main_table WHERE db1.user_table.user_id = db2.main_table.user_id"
と言うようにやればいいと思います。
できない場合はどんなエラーが出るのか?
どのようにやったのか?
を書いていただければ解決の手がかりになります。
$x = mysql_connect(localhost,user,pass);
mysql_select_db('db1',$x);
mysql_select_db('db2',$x);
$sql = "SELECT * FROM db1.table1,db2.table2 WHERE table1.id = table2.id";
というやり方でできることがわかりました。ありがとうございました。
No.2
- 回答日時:
>2.できたとしてリレーションを行うことができますでしょうか?
この答えは、同一サーバ上に、
・複数のデータベースサーバを動作させているのか
・単一データベースサーバ上で複数データベースなのか
で、答えが変わってきます。
スクリプトから想像するに、1つのマシンに1つのデータベースサーバを動作させ、
2つのデータベースがあるだけのように思いますので、書かれているような
リレーション(というか結合処理)は可能です。
この回答への補足
これは1つのサーバーマシン上に、複数のデータベースがあります。(MySQLは1つです)
書かれているようなリレーション(というか結合処理)は可能です。
どのように書いたらよろしいのでしょうか?
No.1
- 回答日時:
1.
echo $row_user["user_name"];
とか
echo $row_user[0]["user_name"];
とかでも出ませんか?
2.
異なるDB間でリレーションさせることはできないと思います。
コネクションはDBに対して張られるので、2つのDBのコネクションを合体してクエリーを投げることは通常できません。
そういうAPIを誰かが作っていれば別ですが。
この回答への補足
返答ありがとうございます。
echo $row_user["user_name"];
とか
echo $row_user[0]["user_name"];
のいずれも出来ませんでした。
2.Accessとかでは、リンクファイルというような形式をとってクエリーが組めるのでできるのかと安易に思っていましたが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
select文のwhere句に配列を入れ...
-
エクセルの関数について教えて...
-
updateを1行ずつ実行したい。
-
Access パラメータクエリをcsv...
-
VIEWの元のテーブルのindexって...
-
MYSQLでSQLSERVERのリンクサー...
-
【Transact-sql】 execの結果を...
-
SQLにて特定の文字を除いた検索...
-
【初心者】特定の文字に色をつ...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
inner joinをすると数がおかし...
-
キー毎の、ある列のmaxのレコー...
-
ある条件の最大値+1を初番する...
-
[MySQL] 3つのテーブルの結合で...
-
PL/SQLの変数について
-
期間の重複を調べるSQL文につい...
-
MySQLのint型で001と表示する方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報