MySql - 从一个数据库更新到另一个数据库

时间:2014-08-28 11:23:30

标签: php mysql sql-update

仅供参考:我已尝试使用已发布的其他解决方案来解决此查询,但未取得任何成功。我决定使用下面的代码,因为它似乎是完成我的任务最合乎逻辑的。但是,如果有一个完全不同的解决方案,那就没问题 - 只要它有效。

在同一台服务器中,有两个具有相同字段名称的数据库。

两个DB:
ID,
用户,
残疾人士,
电子邮件

我正在尝试从DB#2(正确的pwds)获取所有密码,并根据每个用户的电子邮件地址将它们移动到DB#1(不正确的pwds)。不幸的是,我不能使用ID,因为每个数据库的每个用户都不同。

以下代码无效。我没有收到任何错误 - 它只是没有进行更新。

另外,我意识到这种类型的编码已被弃用。如果有人使用更新的语法来解决这个问题,那就太棒了。

<?php

$dbhost1="localhost";
$dbname1="aaaaaa";
$dbuser1="bbbbbb";
$dbpass1="cccccc";

$dbhost2="localhost";
$dbname2="dddddd";
$dbuser2="eeeeee";
$dbpass2="ffffff";

$conn1 = mysql_connect($dbhost1, $dbuser1, $dbpass1);
$conn2 = mysql_connect($dbhost2, $dbuser2, $dbpass2, true);
if(! $conn1 || ! $conn2 )
{
  die('Could not connect to db1 or db2: ' . mysql_error());
}

mysql_select_db('db1', $conn1);
mysql_select_db('db2', $conn2);

$query = "UPDATE db1.users as t1, db2.users as t2 SET t1.pwds = t2.pwds WHERE t1.emails = t2.emails";

// LINE BELOW ADDED AFTER COMMENTS POSTED:
mysql_query($query, $conn1);

mysql_close($conn1);
mysql_close($conn2);

?>

3 个答案:

答案 0 :(得分:1)

$query构造线之后使用此行:

mysql_query($query);

答案 1 :(得分:1)

发布有关 mysql_query()的缺失代码行的人完全正确。但是,我觉得有必要继续这个帖子 - 强调这些信息 - 其他人也在寻找这个解决方案。

实际问题是两个用户都需要分配给两个DB并为两个DB提供ALL PRIVILEGES。只要我一次访问一个数据库,一切都很好。只要我编写了两个用户和两个DB,就会发生访问错误。

提示:如上所述,添加额外的代码行以显示错误。我已经吸取了教训。谢谢大家。

...最后一个INSANELY重要的事情是实际查询的更新语法:

$query = "UPDATE db1.users INNER JOIN db2.users ON (db1.users.emails = db2.users.emails) SET db1.users.pwds = db2.users.pwds";

答案 2 :(得分:0)

mysql_query()

之后遗漏$query

你就是这样写的

如果你想更新$ conn1然后

mysql_query($query, $conn1);

如果你想更新$ conn2那么

mysql_query($query, $conn2);