我有一个表单,我想在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)
什么是正确的语法?
答案 0 :(得分: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());
或者如果您使用的是远程主机,请检查主机名
答案 1 :(得分:1)
'localhost'将您连接到同一服务器上的数据库。要访问不同服务器上的数据库,请提供其实际主机而不是“differenthost”。
然后当您连接到第二台服务器(第二次调用mysql_connect)时,获取并保存连接值,然后每次为每个新查询重新连接时都不需要重新连接。正如您对finction mysql_query所知,您可以传递第二个参数 - 它是数据库的链接。
切换到较新的扩展名MySQLi,很快就会弃用。
答案 2 :(得分: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');
答案 3 :(得分:0)
首先,您应该检查您的连接是否成功。您在第一个实例中遇到连接错误。
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>
答案 4 :(得分: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的答案,因为这可能是一种更好的方法。
答案 5 :(得分:0)
问题不在于保存2个数据库,而是在连接配置中。
确保可以访问“differenthost”,并且MySQL端口已打开(通常为3306)。
另外,在PHP 5.5中不推荐使用mysql_connect,我建议改用PDO。