仅供参考:我已尝试使用已发布的其他解决方案来解决此查询,但未取得任何成功。我决定使用下面的代码,因为它似乎是完成我的任务最合乎逻辑的。但是,如果有一个完全不同的解决方案,那就没问题 - 只要它有效。
在同一台服务器中,有两个具有相同字段名称的数据库。
两个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);
?>
答案 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);