使用PHP和MySQL连接多个数据库

时间:2016-08-12 05:36:42

标签: php mysql database

我们有这个多个数据库,我们需要将它们全部连接在一起。我们正在使用关系表来回交谈。多个数据库将帮助我们单独备份项目或版本。

注册数据库:用户登录
项目数据库:登录用户下的项目数量 版本数据库:所选项目下的版本数

问题
因为我们使用01,所以一次只能有一个用户能够连接到数据库。我们需要的是下面流程图中的那个。多个用户可以连接到数据库并处理不同的项目>不同的版本。

谢谢!

旁注:我们愿意尝试不同的方法

https://github.com/serilog/serilog/issues/825

<?php
//database error message
 $connect_error='We could not able to connect. Please try later'; 

// Registration table
 $main = mysql_connect('localhost','root','',true) or die($connect_error);
 mysql_select_db('registration-table', $main) ;

// Obtaining session id
if(isset($_SESSION['id'])===true){  
    $session  = $_SESSION['id'];

    // Filtering projects based on 0 and 1
    $sql  = mysql_query("SELECT * FROM project1_table where user_id = '$session' and database_active = '0'",$main);
    $row  = mysql_fetch_array($sql);

    // Each Project has Versions
    $project_id = $row['id'];
    $sqli = mysql_query("SELECT * FROM version_table where project_id = '$project_id' and database_active ='0'",$main);
    $emp = mysql_fetch_array($sqli);

    // Fetching the database name
    $db_name = $emp['database_name'];
    $sub   = mysql_connect('localhost','root','',true) or die($connect_error);
    mysql_select_db("$db_name", $sub) ;
    }
?>

2 个答案:

答案 0 :(得分:4)

首先我建议你使用mysqliPDO以外的mysql,因为在PHP 5.5之后版本的mysql函数已弃用,因此将来不会提供mysql函数

Mysql中的多个数据库连接

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

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

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

使用Mysqli进行多重连接

$link1 = new mysqli($hostname, $username, $password,$database1);
$link2 = new mysqli($hostname, $username, $password,$database2);

mysqli_query($link1,"SELECT * FROM table");
mysqli_query($link2,"SELECT * FROM table");

PDO中的多个数据库连接

$conn1 = new PDO("mysql:host=$hostname;dbname=database1", $username, $password);
$conn2 = new PDO("mysql:host=$hostname;dbname=database1", $username, $password);

$conn1->query("SELECT * FROM table");
$conn1->query("SELECT * FROM table");

答案 1 :(得分:0)

$conn1 = mysqli_connect( $db_host, $db_user, $db_pass, $db_name );

$conn2 = mysqli_connect( $db_host2, $db_user2, $db_pass2, $db_name2 );

假设您有一个名为chat1和chat2的数据库,以及一个名为tbl_chat1和tbl_chat2的表。

$sql1 = "SELECT `id`, `msgs` FROM `chat1` . `tbl_chat1`";
$sql2 = "SELECT `id`, `msgs` FROM `chat2` . `tbl_chat2`";

$result1 = mysqli_query($conn1, $sql1);
$result2 = mysqli_query($conn2, $sql2);

但是,无需连接多个数据库就可以实现数据库备份。