2014-08-28 195 views
1

仅供参考:我曾尝试使用已发布的其他解决方案来解决此查询,但尚未取得任何成功。我决定使用下面的代码,因为完成我的任务似乎是最合乎逻辑的。然而,如果有一个完全不同的解决方案,那很好 - 只要它有效。MySql - 从一个数据库更新到另一个数据库

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

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

我想抓住从DB#2(正确的残疾人士)的所有密码,并将它们移到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); 

?> 
+1

您没有运行查询。 – 2014-08-28 11:27:48

+0

即使在你的情况下你不使用任何用户输入,mysql_函数也是不安全的。首选使用mysqli_函数或pdo – Logar 2014-08-28 11:53:42

+0

回显$查询,看看是否有任何问题,或使用error_reporting(E_ALL)来检查错误,这将给更好的idea.as @Loger说使用pdo或PHP扩展mysqli。 – 2014-08-28 11:55:25

回答

2

该贴一下代码关于的mysql_query()是完全正确的缺失行的人。不过,我觉得有必要继续这篇文章 - 强调这些信息 - 对于其他人也在寻找这个解决方案。

实际的问题是,两个用户都需要分配给两个数据库,并为这两个数据库分配给所有特权。只要我一次访问一个数据库,一切都很好。只要我编码两个用户和两个数据库,发生访问错误。

提示:正如上面提到的那样,添加额外的代码行来显示错误。我吸取了教训。谢谢大家。

......和最后疯狂重要的是实际查询更新的语法:

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

$query构造线使用这条线:

mysql_query($query); 
+0

不要使用mysql_query,而要使用mysqli_query。 mysql_query已过时! – CodeShark 2014-08-28 11:56:59

+0

我知道@ mar2195答案我已发布,我建议他一样。 – 2014-08-28 11:59:37

0

缺少的mysql_query()$query

如果你想在$ conn1的更新,那么你只写这样的

mysql_query($query, $conn1); 

如果你想在$ CONN2更新,然后

mysql_query($query, $conn2); 
+0

我已更新我的原始帖子以包含缺少的代码行。我刚刚运行脚本,但仍未更新数据库。 ? – mar2195 2014-08-28 11:56:32

+0

请勿使用mysql_query,而应使用mysqli_query。 mysql_query已过时! – CodeShark 2014-08-28 11:58:35

相关问题