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

时间:2013-08-09 07:34:50

标签: php mysql

我有两个不同的网站。我想要做的是当用户注册并更新站点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.");
?>

3 个答案:

答案 0 :(得分: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 

$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 . "` ";

您可以从两个数据库中获取上述查询的数据,如下所示

$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);
?>

建议:尝试转换为mysqliPDO,因为mysql现已弃用。

答案 1 :(得分:0)

回顾mysql_connect的文档:

  

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

...以及mysql_query的第二个参数的文档:

  

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

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

$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 );

答案 2 :(得分:0)

那么,

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

另外,如果您使用完全限定名来访问表,则不需要调用mysql_select_db,也不需要调用'use db_name'mysql命令。

您的查询字符串错误。在USE $ db_name2之后,你应该有一个分号,并且更新句子不正确。

代码可能是这样的:

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