アプリ版:「スタンプのみでお礼する」機能のリリースについて

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"
というようなことはできますでしょうか?

長文で申し訳ありませんが、どうかよろしくお願いします。

A 回答 (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"
と言うようにやればいいと思います。

できない場合はどんなエラーが出るのか?
どのようにやったのか?
を書いていただければ解決の手がかりになります。
    • good
    • 0
この回答へのお礼

$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";

というやり方でできることがわかりました。ありがとうございました。

お礼日時:2005/12/22 13:35

>2.できたとしてリレーションを行うことができますでしょうか?



この答えは、同一サーバ上に、
・複数のデータベースサーバを動作させているのか
・単一データベースサーバ上で複数データベースなのか
で、答えが変わってきます。

スクリプトから想像するに、1つのマシンに1つのデータベースサーバを動作させ、
2つのデータベースがあるだけのように思いますので、書かれているような
リレーション(というか結合処理)は可能です。

この回答への補足

これは1つのサーバーマシン上に、複数のデータベースがあります。(MySQLは1つです)

書かれているようなリレーション(というか結合処理)は可能です。
どのように書いたらよろしいのでしょうか?

補足日時:2005/12/07 09:02
    • good
    • 0

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とかでは、リンクファイルというような形式をとってクエリーが組めるのでできるのかと安易に思っていましたが・・・

補足日時:2005/12/07 08:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す