-2

我有一个表单,我想在 2 个数据库中提交表单数据。但问题是:两个数据库都在不同的服务器上。我是 mysql 新手,所以我不知道该怎么做。我在 php 工作。我正在与您分享我的代码,它无法正常工作。所以请检查一下:

$con = mysql_connect('differenthost','user1','pass1');
mysql_select_db('dbname1',$con);

$path = "misc/classified/".$submiturl;

mysql_query("insert into tablename1 (title,description,status,parent_id,path) values ('$submiturl','$submiturl','active','68','$path')") or die(mysql_error());
mysql_close($con);

mysql_connect('localhost','user2','pass2');
mysql_select_db('dbname2');

$check = mysql_query("select count(*) from tablename2 where userid = '".$_SESSION['userid']."' and datecreated = '$datecreated'") or die(mysql_error());

当我提交表单时出现此错误:

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'differenthost' (25) in /home/class/public_html/microworker/submiturl.php on line 11

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/class/public_html/microworker/submiturl.php on line 12

Warning: mysql_query() [function.mysql-query]: Access denied for user 'user2'@'localhost' (using password: NO) in /home/class/public_html/microworker/submiturl.php on line 16

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/class/public_html/microworker/submiturl.php on line 16
Access denied for user 'user2'@'localhost' (using password: NO)

什么是正确的语法?

4

6 回答 6

1

'localhost' 将您连接到同一服务器上的数据库。要访问不同服务器上的数据库,请提供其实际主机而不是“不同主机”。

然后,当您连接到第二台服务器(第二次调用 mysql_connect)时,获取并保存连接值,然后每次对于每个新查询,您都不需要再次重新连接。正如您对函数 mysql_query 所知,您可以传递第二个参数 - 它是数据库的链接。

并切换到更新的扩展 MySQLi,这个很快就会被弃用。

于 2013-09-27T09:41:38.700 回答
1

在您的连接字符串中,您使用了错误的服务器名称

$con = mysql_connect('differenthost','user1','pass1');

用户 localhost 作为您的服务器名称

$con = mysql_connect('localhost','user1','pass1');

并且应该您的完整代码

$con = mysql_connect('localhost','user1','pass1');
        mysql_select_db('dbname1',$con);

        $path = "misc/classified/".$submiturl;

        mysql_query("insert into tablename1 (title,description,status,parent_id,path) values ('$submiturl','$submiturl','active','68','$path')") or die(mysql_error());
        mysql_close($con);

        mysql_connect('localhost','user2','pass2');
        mysql_select_db('dbname2');

        $check = mysql_query("select count(*) from tablename2 where userid = '".$_SESSION['userid']."' and datecreated = '$datecreated'") or die(mysql_error());

或者如果您使用的是远程主机,请检查主机名

于 2013-09-27T09:34:39.313 回答
0

首先,您应该检查您的连接是否成功。您首先遇到连接错误。

<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

http://www.php.net/manual/en/function.mysql-connect.php

于 2013-09-27T09:39:00.763 回答
0

使用此代码

您可以在 mysql_query 中使用 $con 和 $con2 作为第二个参数

$con = mysql_connect('differenthost','user1','pass1');
mysql_select_db('dbname1',$con);

$path = "misc/classified/".$submiturl;

mysql_query("insert into tablename1 (title,description,status,parent_id,path) values ('$submiturl','$submiturl','active','68','$path')",$con) or die(mysql_error());
mysql_close($con);

$con2 = mysql_connect('localhost','user2','pass2');
mysql_select_db('dbname2');

$check = mysql_query("select count(*) from tablename2 where userid = '".$_SESSION['userid']."' and datecreated = '$datecreated'",$con2) or die(mysql_error());

参考这个

您可以多次调用mysql_connect(),但如果参数相同,则需要为 ' $new_link'(第四个)参数传递 true,否则会重复使用相同的连接。

那么你有

$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

然后查询数据库 1,执行以下操作:

mysql_query('select * from tablename', $dbh1);

对于数据库 2:

mysql_query('select * from tablename', $dbh2);

或者,如果 mysql 用户可以访问两个数据库并且它们位于同一主机上(即两个数据库都可以从同一个 MySQL 连接访问),您可以:

  • 保持一个连接打开并继续调用mysql_select_db()以进行交换。我认为这不是一个干净的解决方案,您很容易遇到查询错误数据库等的情况。
  • 在您指定数据库名称的地方使用查询(例如SELECT * FROM database2.tablename),但这很可能再次难以实现。

另请阅读 troelskn 关于使用 PDO 的回答,因为这可能是一种更好的方法。

于 2013-09-27T09:40:16.700 回答
0

问题不在于保存在 2 个数据库中,而在于连接配置。

确保“不同主机”是可访问的,并且 MySQL 端口是开放的(通常是 3306)。

此外,mysql_connect 在 PHP 5.5 中已弃用,我建议改用 PDO。

于 2013-09-27T09:40:26.137 回答
0

线

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'differenthost' (25) in /home/class/public_html/microworker/submiturl.php on line 11

清楚地表明您的应用程序无法连接到数据库。尝试 在此行中提供正确的主机名和/或用户名/密码

$con = mysql_connect('differenthost','user1','pass1');
于 2013-09-27T09:36:45.277 回答