如何建立到mysql的子连接?

时间:2014-09-09 17:45:39

标签: php mysql

我有这个配置文件。

<?PHP
$s_ipserver1 = "10.0.0.101";
$db_porta1    = "3306";
$db_user1     = "user";
$db_password1 = "123456";
$db_name1     = "name";

$s_ipserver2 = "xxx.xxx.xxx.xxx";
$db_porta2    = "3306";
$db_user2     = "user";
$db_password2 = "123456";
$db_name2     = "name";

$s_ipserver3 = "xxx.xxx.xxx.xxx";
$db_porta3    = "3306";
$db_user3     = "user";
$db_password3 = "123456";
$db_name3     = "name";
?>

我想把它转换成这样的东西。

<?PHP

$dbL = "1";// Que servidor é este? 1, 2 ou 3.

$s_ipserver1 = "10.0.0.101";
$db_porta1    = "3306";
$db_user1     = "user";
$db_password1 = "123456";
$db_name1     = "name";

$s_ipserver2 = "xxx.xxx.xxx.xxx";
$db_porta2    = "3306";
$db_user2     = "user";
$db_password2 = "123456";
$db_name2     = "name";

$s_ipserver3 = "xxx.xxx.xxx.xxx";
$db_porta3    = "3306";
$db_user3     = "user";
$db_password3 = "123456";
$db_name3     = "name";

$s_ipserver  = "$s_ipserver$dbL";
$db_porta    = "$db_porta$dbL";
$db_user     = "$db_user$dbL";
$db_password = "$db_password$dbL";
$db_name     = "$db_name$dbL";
?>

这是连接文件之一。

<?PHP
include_once("/pasta/config.php");
$db_host1     = "$s_ipserver1:$db_porta1";
$db_link1     = mysql_connect($db_host1, $db_user1, $db_password1) or die (mysql_error ());
$db_connect1  = mysql_select_db($db_name1, $db_link1);

&GT;

我需要得到这样的东西。

<?PHP
include_once("/pasta/config.php");
$db_host      = "$s_ipserver:$db_porta";
$db_link      = mysql_connect($db_host, $db_user, $db_password) or die (mysql_error ());
$db_connect   = mysql_select_db($db_name, $db_link);
?>

我的错误在哪里。 所有原始文件都运行良好。

3 个答案:

答案 0 :(得分:0)

为什么不为连接变量使用数组语法?

$connexion[1]=['server'=>'10.0.0.101','port'=>'3306','user'=>'user','password'=>'123456','dbname'=>'name'];

$s_ipserver[1] = "10.0.0.101";
$db_porta[1]    = "3306";
$db_user[1]     = "user";
$db_password[1] = "123456";
$db_name[1]     = "name";

答案 1 :(得分:0)

如果要创建另一个连接,则需要将4th param设置为true,否则它将重新使用现有连接,导致最后选择的DB成为两个连接中使用的DB:

$db_link      = mysql_connect($db_host, $db_user, $db_password, TRUE) or die (mysql_error ());
$db_connect   = mysql_select_db($db_name, $db_link);

更多关于第4个参数:

If a second call is made to mysql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. The new_link parameter modifies this behavior and makes mysql_connect() always open a new link, even if mysql_connect() was called before with the same parameters. In SQL safe mode, this parameter is ignored.

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

答案 2 :(得分:-1)

它不是一个干净漂亮的代码,但解决了我的问题,服务器需要通过从小变量$dbL选择3个可能的连接来绑定自己

在/pasta/config.php

<?PHP

$dbL = "1";// Que servidor é este? 1, 2 ou 3.

$s_ipserver1 = "10.0.0.101";
$db_porta1    = "3306";
$db_user1     = "user";
$db_password1 = "123456";
$db_name1     = "name";

$s_ipserver2 = "xxx.xxx.xxx.xxx";
$db_porta2    = "3306";
$db_user2     = "user";
$db_password2 = "123456";
$db_name2     = "name";

$s_ipserver3 = "xxx.xxx.xxx.xxx";
$db_porta3    = "3306";
$db_user3     = "user";
$db_password3 = "123456";
$db_name3     = "name";
?>

在/pasta/subconnect.php

<?php 
include_once("/pasta/config.php");
$ipserver  = 's_ipserver'. $dbL;
$porta     = 'db_porta'. $dbL;
$user      = 'db_user'. $dbL;
$password  = 'db_password'. $dbL;
$name      = 'db_name'. $dbL;
?>

在/pasta/connect.php

<?PHP
include_once("/pasta/subconnect.php");
$host      = $$ipserver . ':'. $$porta;
$link      = mysql_connect($host, $$user, $$password) or die (mysql_error ());
$db_connect   = mysql_select_db($$name, $link);
?>