私はデータベースを持っています(それを呼びましょうA
)
複数のDBに情報が必要です(B、C、Dにはまったく同じ情報が必要です)
それらすべてを (X) 時間ごとに自動更新するものを作成できますか?
#IIS 7/php を使用して 2 つの joomla コンポーネントを同期するには、これが必要です。
試してみました(最初はうまくいきますが、変更すると、このコンポーネントにはプライマリがないため、失敗します):
#データの取得
$mysqli = @new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_WORLD);
/* Vérification de la connexion */
if (mysqli_connect_errno()) {
die("&error=".mysqli_connect_error()."&");
exit();
}
$query = " SELECT table_name
FROM information_schema.tables
WHERE table_name LIKE '%XXXXXXX%'";
$arrTableList = array();
$allInArray = array();
if ($result = $mysqli->query($query)) {
/* Récupère un tableau d'objets */
while ($obj = $result->fetch_object()) {
$arrTableList[] = $obj->table_name;
}
/* free result set */
$result->close();
}
foreach($arrTableList as $key => $value){
$query = " SELECT *
FROM $value";
if ($result = $mysqli->query($query)) {
/* Récupère un tableau d'objets */
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$allInArray[$value][] = $row;
}
/* free result set */
$result->close();
}
}
挿入機能
function toSwich($newDb, $tmpTag){
global $mysqli;
global $allInArray;
global $tag1;
$mysqli->select_db($newDb);
foreach($allInArray as $table => $tableArrayData){
$table = str_replace ($tag1, $tmpTag, $table);
foreach($tableArrayData as $uselessKey => $valueArray){
$keyList = "";
$valueList = "";
$query = "SELECT COUNT(*) FROM $table WHERE ";
foreach($valueArray as $key => $value){
$key = $mysqli->real_escape_string($key);
$value = $mysqli->real_escape_string($value);
$keyList .= $key . ",";
$valueList .= "'" . $value . "',";
$query .= " $key = '$value' AND";
}
$query = substr($query,0,-3);
$valueList = substr($valueList,0,-1);
$keyList = substr($keyList,0,-1);
if(!$result = $mysqli->query($query)){
print_r($mysqli->error);
echo "<br />";
print_r($query);
echo "<br />";
exit();
}
$row = $result->fetch_row();
if((int)$row[0] == 0){
if(!$mysqli->real_query("INSERT INTO $table ($keyList) VALUES ($valueList)")){
print_r($mysqli->error);
exit();
}
}
}
}
}