我有一个数据库(让我们称之为A
)
我需要将信息放在多个数据库中(B、C、D 需要完全相同的信息)
我可以做一些每(X)小时自动更新一次的东西吗?
#我需要这个才能使用 IIS 7 / php 同步 2 个 joomla 组件。
尝试过(第一次效果很好,但是如果更改了一个,它就会出错,因为此组件中没有 Primary):
#获取我的数据
$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();
}
}
}
}
}