Php 从两个不同数据库中的表更新数据

Php 从两个不同数据库中的表更新数据,php,mysql,Php,Mysql,我有两个不同的网站。我想做的是,当用户注册并更新站点2数据库中的表时,自动运行一个脚本,将插入到站点1数据库中的一些数据发送到该脚本,以便使用相同的详细信息在站点2中自动创建一个帐户 我正在尝试创建一个将更新数据库的查询。我是白手起家的人,所以不太清楚我在做什么。从某处收到此查询,但无法使其工作。有人能告诉我它出了什么问题吗?它没有执行查询 谢谢 尤金妮 <?php $host = "localhost"; // Host name $username = "----"

我有两个不同的网站。我想做的是,当用户注册并更新站点2数据库中的表时,自动运行一个脚本,将插入到站点1数据库中的一些数据发送到该脚本,以便使用相同的详细信息在站点2中自动创建一个帐户

我正在尝试创建一个将更新数据库的查询。我是白手起家的人,所以不太清楚我在做什么。从某处收到此查询,但无法使其工作。有人能告诉我它出了什么问题吗?它没有执行查询

谢谢

尤金妮

<?php

    $host = "localhost"; // Host name 
    $username = "----"; // Mysql username 
    $password = "----"; // Mysql password 
    $db_name1 = "------"; // Database name 
    $db_name2 = "-----"; // Database name 
    $tbl_name1 = "-----"; // Table name 
    $tbl_name2 = "---"; // Table name 

    // Connect to server and select database.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name1")or die("cannot select DB");

    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name2")or die("cannot select DB");
    $query = "USE $db_name2 
              UPDATE $db_name2.dbo.$tbl_name2 
              SET email=d2.email FROM $db_name1.dbo.$tbl_name1 d2 
              WHERE d2.uid = $tbl_name1.uid";
    $result = mysql_query($query) or die ("could't execute query.");
?>

回想一下mysql\u connect的文档:

成功时返回MySQL链接标识符,失败时返回FALSE

。。。以及
mysql\u查询的第二个参数的文档:

MySQL连接。如果未指定链接标识符,则假定mysql_connect()打开的最后一个链接。如果找不到这样的链接,它将尝试创建一个链接,就像调用mysql_connect()时没有参数一样。如果未找到或建立连接,将生成E_警告级别错误

。。。应该能解决你的问题。例如:

$link1 = mysql_connect( ... ); // For db 1.
$link2 = mysql_connect( ... ); // For db 2.

$result1 = mysql_query( "some query for db 1", $link1 );
$result2 = mysql_query( "some query for db 2", $link2 );
那么

首先,您没有连接到两个不同的数据库,而是在同一个数据库中使用两个不同的模式。因此,只应使用mysql_连接

此外,如果使用完全限定名访问表,则不需要调用mysql\u select\u db,也不需要调用“use db\u name”mysql命令

您的查询字符串错误。在使用$db_name2之后,应该有一个分号,更新语句不正确

代码可能是这样的:

mysql_connect(…) $query=“update$db2.$table2,$db1.$table1

<?php

$host = "localhost"; // Host name 
$username = "----"; // Mysql username 
$password = "----"; // Mysql password 
$db_name1 = "------"; // Database name 
$db_name2 = "-----"; // Database name 
$tbl_name1 = "-----"; // Table name 
$tbl_name2 = "---"; // Table name 

$conn = mysql_connect($host, $username, $password);
mysql_select_db($db_name1, $conn) or die("cannot select DB");
mysql_select_db($db_name2, $conn) or die("cannot select DB");;

$query1 = "SELECT * FROM `" . $db_name1.$tb1_name1 . "` ";
$query2 = "SELECT * FROM `" . $db_name2.$tb1_name2 . "` ";

建议:尝试切换到
mysqli
PDO
,因为
mysql
现在已经贬值了。

你有什么错误吗?请看这个问题:嗨,是的:无法执行查询。嗨,谢谢,但说到这个问题,我真的是个傻瓜。我几乎可以复制和粘贴代码,并做一些最小的调整调整但如果你带我离开那里,我就迷路了。如果我能得到我需要的代码,以便粘贴和尝试,那将非常感谢。谢谢!嗨,谢谢你的回复。与上面的评论相同。在编码方面,我是一个完全的傻瓜。我可以复制、粘贴并尝试的东西将非常完美:)
$result1 = mysql_query($query1);
while($row = mysql_fetch_assoc($result1)) {
    $data1[] = $row;
}

$result2 = mysql_query($query2);
while($row = mysql_fetch_assoc($result2)) {
    $data2[] = $row;
}

print_r($data1);
print_r($data2);
?>