有没有任何方法来同步远程和& PHP中的本地数据库,没有复制和第三方软件

时间:2013-02-14 12:30:50

标签: php mysql phpmyadmin

我正在开发一个带有mysql数据库和一个表的简单应用程序。我每天更新本地数据库。但每周我都想通过单击按钮将其更新到远程mysql数据库。 I know about the synchronization and replication in PHPMyAdmin. But I don't want to use it.

我成功检查了文件中的远程和本地数据库连接。但无法获得同步解决方案。 有什么方法可以在PHP中进行同步吗?

我读过很多文章,但所有文章都在使用复制和同步方法。因为我必须将此应用程序交付给客户。我想给他最简单的解决方案。

*我有cPanel,PHPMyAdmin访问远程数据库。 提前谢谢。

2 个答案:

答案 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。