これらの2つのテーブルを結合するのに問題があったときに、両方のリモートデータベースを同時に開くことで、自分がやりたいことを正確に実行することができました。MySQL 5.6(php 7.1)およびその他のMySQL 5.1(php 5.6)
//Open a new connection to the MySQL server
$mysqli1 = new mysqli('server1','user1','password1','database1');
$mysqli2 = new mysqli('server2','user2','password2','database2');
//Output any connection error
if ($mysqli1->connect_error) {
die('Error : ('. $mysqli1->connect_errno .') '. $mysqli1->connect_error);
} else {
echo "DB1 open OK<br>";
}
if ($mysqli2->connect_error) {
die('Error : ('. $mysqli2->connect_errno .') '. $mysqli2->connect_error);
} else {
echo "DB2 open OK<br><br>";
}
画面にこれらの2つのOKが表示されたら、両方のデータベースが開いて準備ができています。次に、クエリの実行に進むことができます。
あなたの特定の質問について、私は最初にデータベースAからすべての10歳の子供を選択し、次にデータベースBからのIDによってそれらを色に一致させるようなことをします。それはうまくいくはずです、私は私のサーバーでこのコードをテストしていませんが、以下の私のサンプルこのコードは機能します。色、年齢など、何でもカスタムクエリを実行でき、必要に応じてグループ化することもできます。
$results = $mysqli1->query("SELECT * FROM DatabaseTableA where age=10");
while($row = $results->fetch_array()) {
$theColorID = $row[0];
$theName = $row[1];
$theAge = $row[2];
echo "Kid Color ID : ".$theColorID." ".$theName." ".$theAge."<br>";
$doSelectColor = $mysqli2->query("SELECT * FROM DatabaseTableB where favorite_color=".$theColorID." ");
while($row = $doSelectColor->fetch_assoc()) {
echo "Kid Favorite Color : ".$row["favorite_color"]."<br>";
}
}
これを使用して、リモートサーバーからテーブルを結合せずにプログラムを切り替えたり、今のところ問題はありません。
$results = $mysqli1->query("SELECT * FROM video where video_id_old is NULL");
while($row = $results->fetch_array()) {
$theID = $row[0];
echo "Original ID : ".$theID." <br>";
$doInsert = $mysqli2->query("INSERT INTO video (...) VALUES (...)");
$doGetVideoID = $mysqli2->query("SELECT video_id, time_stamp from video where user_id = '".$row[13]."' and time_stamp = ".$row[28]." ");
while($row = $doGetVideoID->fetch_assoc()) {
echo "New video_id : ".$row["video_id"]." user_id : ".$row["user_id"]." time_stamp : ".$row["time_stamp"]."<br>";
$sql = "UPDATE video SET video_id_old = video_id, video_id = ".$row["video_id"]." where user_id = '".$row["user_id"]."' and video_id = ".$theID.";";
$sql .= "UPDATE video_audio SET video_id = ".$row["video_id"]." where video_id = ".$theID.";";
// Execute multi query if you want
if (mysqli_multi_query($mysqli1, $sql)) {
// Query successful do whatever...
}
}
}
// close connection
$mysqli1->close();
$mysqli2->close();
私はいくつかの結合を行おうとしていましたが、これら2つのDBを開いたので、接続を変更するだけでクエリを行ったり来たりすることができます$mysqli1
。$mysqli2
それは私のために働いた、私はそれが役立つことを願っています...乾杯