2

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

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

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

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

4

2 回答 2

1

如果您在本地系统中更新,请使用此软件检查此http://www.heidisql.com/,它将在您的远程服务器中自动更新。

于 2013-02-14T12:41:25.270 回答
-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。

于 2013-02-14T14:42:13.617 回答