1

我有两个不同的网站。我想做的是自动运行一个脚本,当用户注册并更新站点 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.");
?>
4

3 回答 3

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已经贬值了。

于 2013-08-09T09:37:28.327 回答
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 );
于 2013-08-09T07:46:38.990 回答
0

出色地,

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

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

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

代码可能是这样的:

mysql_connect(...) $query = "更新 $db2.$table2, $db1.$table1

于 2013-08-09T07:52:45.823 回答