-1

現在、ログイン システムなどのために、次の内容の connect.php ファイルを使用しています。

$connect_error = 'Sorry, we\'re currently experiencing connection problems.';
mysql_connect('localhost', 'x', 'x') or die($connect_error);
mysql_select_db('x');

現在、ユーザーが自分のアカウントにデバイスを追加できるようにするシステムを開発中です

メイン テーブルには、すべてのユーザー情報 (名、姓、電子メール、パスワードなど) が格納されます。

このテーブルに、次のフィールドを追加します - デバイス 1、デバイス 2、デバイス 3

これに加えて、別のデータベースにもアクセスしたいと考えています。メイン データベースにデバイス ID を保持して、誰がどのデバイスを所有しているかを把握したいと考えています。

2 番目のデータベースは、デバイス ID、緯度、経度、時間で構成されます

どちらのデータベースからも読み出せるようにしたいのですが、接続先のデータベースをどのように指定すればよいかわかりません。これまでに 1 つのデータベースしか扱ったことがないためです。

それが実行可能かどうか、またはまったく間違った方法で行っているかどうかはわかりません-両方のデータベースが同じサーバー上にあり、それが役立つ場合は両方のデータベースに同じユーザーを割り当てることができます

ありがとう

4

2 に答える 2

2

mysql_* 関数は非推奨であるため、使用しないでください。

$database_handler_1 = mysql_connect("localhost", "username", "password");
// The fourth parameter is for "new link" 
$database_handler_2 = mysql_connect("localhost", "username", "password", true); 

// Insert as parameter the database handler
mysql_select_db('database1', $database_handler_1);
mysql_select_db('database2', $database_handler_2);

// And run queries with the database handler as second parameter:
mysql_query("SELECT * FROM table", $database_handler_1);
mysql_query("SELECT * FROM table", $database_handler_2);

代わりに使用できます:

$database_handler_1 = new PDO('mysql:host=localhost;dbname=database1', $user, $pass);
$database_handler_2 = new PDO('mysql:host=localhost;dbname=database2', $user, $pass);
$database_handler_1->query('SELECT * from FOO')
$database_handler_1->query('SELECT * from BAR')

(ここで完全な PDO ドキュメントを参照してください: http://php.net/manual/en/pdo.connections.php )

于 2013-01-05T02:56:07.093 に答える
0

まず第一に、関数は非推奨であるため、使用しないでください。これにはMySQLiまたはPDOmysql_*を使用します。

Mysql での解決策は、 mysql_connectによって返されるリンク識別子を使用することです。ただし、MySQLi または PDO を使用する場合は、最初にそれらのオブジェクトを作成し、そのオブジェクトを使用する必要があります。MySQLi の OOP インターフェイスには、リンク識別子の概念がありません。移行に役立つ PHP マニュアルからこのページをお読みください。PDO については、このチュートリアルを使用して学習してください。

MySQLi 拡張の場合、それはすでにオブジェクトであり、オブジェクトにはデータベース情報が含まれています。

$db1 = new mysqli(...);
$db2 = new mysqli(...);

// sending query in database 1
$db1->query("...") 

// sending query in database 2
$db2->query("...") 

MySQL 拡張機能の場合、mysql_connect()はリンク識別子を返します。変数に保存して使用する必要があります。

$link1 = mysql_connect();
mysql_select_db($dbnane, $link1);

$link2 = mysql_connect();
mysql_select_db($dbnane, $link2);

In query you should use it like this,

mysql_query($query, $link1); // query in first db

mysql_query($query2, $link2); // query in second db;
于 2013-01-05T02:57:26.157 に答える