我正在开发一个带有mysql
数据库和一个表的简单应用程序。我每天更新本地数据库。但每周我都想通过单击按钮将其更新到远程mysql数据库。 I know about the synchronization and replication in PHPMyAdmin. But I don't want to use it.
我成功检查了文件中的远程和本地数据库连接。但无法获得同步解决方案。 有什么方法可以在PHP中进行同步吗?
我读过很多文章,但所有文章都在使用复制和同步方法。因为我必须将此应用程序交付给客户。我想给他最简单的解决方案。
*我有cPanel,PHPMyAdmin访问远程数据库。 提前谢谢。
答案 0 :(得分:1)
使用此软件检查此http://www.heidisql.com/如果您在本地系统中进行更新,它将自动在您的远程服务器中更新。
答案 1 :(得分:-1)
如果您要更新远程数据库,我会实时进行,而不是每周进行一次。它为您提供实时的异地备份,并且您也可以更轻松地进行编码。
在PHPMyAdmin中,您可以创建一个拥有远程数据库权限的新MySQL用户。最好创建一个只具有更新远程数据库所需权限的用户帐户,而不是使用具有所有权限的“root”MySQL用户。
然后,您只需修改现有的PHP文件,并在针对本地数据库执行SQL的任何位置添加命令,以对远程数据库执行相同的SQL。例如:
(此代码未经测试,可能包含语法/逻辑错误)
<?php
$local_dsn = 'mysql:host=localhost;dbname=my_database';
$local_username = 'my_local_username';
$local_password = 'my_local_password';
$remote_dsn = 'mysql:host=remote_ip_address;dbname=my_database';
$remote_username = 'my_remote_username';
$remote_password = 'my_remote_password';
$local = new PDO($local_dsn, $local_username, $local_password);
$remote = new PDO($remote_dsn, $remote_username, $remote_password);
$sql = 'UPDATE my_table SET column1 = ? WHERE id = ?';
try{
$local_stmt = $local->prepare($sql);
$local_stmt->bindValue(1, $column1);
$local_stmt->bindValue(2, $id);
if ($local_stmt->execute() && 0 < $local_stmt->rowCount()){
$remote_stmt = $remote->prepare($sql);
$remote_stmt->bindValue(1, $column1);
$remote_stmt->bindValue(2, $id);
$remote_stmt->execute();
}
}catch(PDOException $e){
echo "An error occurred processing sql statement ($sql):" . $e->getMessage();
exit;
}
?>
很难判断您是否能够从本地Windows计算机访问远程数据库。你说“我成功检查了文件中的远程和本地数据库连接。”这对我来说意味着你可以从本地机器访问远程数据库但是你说“我有cPanel ,PHPMyAdmin访问远程数据库“这意味着您无法从本地计算机访问远程数据库...
如果由于某种原因您无法从本地计算机访问远程数据库,则需要在远程服务器上创建至少一个PHP页面,该页面可以执行您在本地执行的相同SQL查询。您将需要使用安全连接(HTTPS)并传递某种身份验证凭据(至少某种哈希或加密密钥)以及要执行的SQL。