示例为两个表(数据结构相同)并在不同的服务器中,就算在同一服务器中,两者的方式基本一致
第一步:
创建公共方法建立与另一个数据表的连接操作( 这里采用 PDO 的方式连接 )
db:原库
dbs:第二个数据库
//第二个数据库执行同步操作
function dbs()
{
//创建第二个数据库连接操作,进行数据同步
return new DB([
'dbtype' => 'mysql',
'host' => '127.0.0.1',
'database' => 'xian',
'name' => 'root',
'password' => 'eoner.com',
]);
}
第二步:
清空原表中的数据,方便第二个数据表的数据可以顺利同步
truncate 的清空方式速度快,并且会重置自增 ID 字段
//使用sql语句清空数据表
$db->query('truncate xian');
第三步:
查询出所需同步的数据,并进行数据重组
//查询出所同步的数据
$data = dbs()->select('xian');
//执行循环将数据同步进去
foreach($data as $key => $val){
$dataTo[] = [
$val['id'],
$val['name'],
$val['state'],
]
}
//数据循环,并进行重组方便组装 SQL 语句
foreach ($dataTo as $key => $val) {
$sql .= "('" . implode("','", $val) . "')" . ",";
}
$sql = substr($sql, 0, - 1);
第四步:
书写SQL语句并进行拼接操作,将数据添加到原表中
//书写 SQL 语句执行操作
$sqls = "INSERT INTO `xian` (`id`,`name`,`state`) VALUES " . $sql;
//执行 SQL 语句
$db->query($sqls);