2016-04-20 2 views
1

Я получил готовую систему бронирования виртуальных рейсов от одного друга, чтобы использовать ее, и она основана на 2 базах данных под 1 именем пользователя и паролем.Выполнение динамического подключения к серверу базы данных

Проблема, которая является моим хостом, генерирует уникальный хост, имя пользователя и пароль для каждой базы данных. Хорошая вещь в этой системе - все скрипты подключения находятся в одном файле, и я модифицировал большинство частей, но я застрял на основной части; function change_db.

Вот mysqlexec кода первый:

<?php 
$ini = parse_ini_file("data.ini.php"); 
$host_rfe = $ini["host_rfe"]; 
$host_nav = $ini["host_nav"]; 
$rfedatabase = $ini["rfedatabase"]; 
$navdatabase = $ini["navdatabase"]; 
$login_db_rfe = $ini["login_db_rfe"]; 
$pass_db_rfe  = $ini["pass_db_rfe"]; 
$login_db_nav = $ini["login_db_nav"]; 
$pass_db_nav  = $ini["pass_db_nav"]; 
$port  = $ini["port"]; 

// Connecting to Database 
if(!([email protected]_connect("$host_rfe:$port",$login_db_rfe,$pass_db_rfe))) { 
    echo "<p align=\"center\"><big><img src=\"images/redx.png\"><br/><strong>It wasn't possible to connect to MySQL server. Please, check the configurations.</strong></big></p>"; 
    exit; 
} 

// Select Database 
if(!([email protected]_select_db($rfedatabase,$sqlconn))) { 
    echo "<p align=\"center\"><big><img src=\"images/redx.png\"><br/><strong>It wasn't possible to connect to database <i>$rfedatabase</i>. Please, check the configurations.</strong></big></p>"; 
    exit; 
} 

/*======================================================================== 
Function: change_db 
    Usage: This function changes the pointer to another MySQL Database 
Arguments: 
    $sqlconn - Connection pointer 
    $db  - Destnation's database 
========================================================================*/ 
function change_db($sqlconn,$db) { 

    global $sqlconn; 

    if(!($con=mysql_select_db($db,$sqlconn))) { 
     echo "<p align=\"center\"><big><img src=\"images/redx.png\"><br/><strong>It wasn't possible to connect to database <i>$db</i>. Please, check the configurations.</strong></big></p>"; 
     exit; 
    } 

    return $con; 
} 
?> 

Системы необходимо подключить всегда как к базе данных зависят от функций. Первоначально соединение с $ rfedatabase, а затем необходимо обменять на $ rfedatabase, а затем может вернуться к первому и так далее. Чтобы выполнить обмен данными с базой данных, система использует функцию change_db. Пример:

change_db($sqlconn,$navdatabase); 
--some functions-- 
change_db($sqlconn,$rfedatabase); 
--some functions-- 

Так вот встает вопрос с глобального $ sqlconn;. Соединение всегда будет $ rfedatabase хоста и не переключается на другой.

Я изменил глобальный $ sqlconn; с этим кодом, но не получилось:

if($db == $rfedatabase){ 
    $sqlconn=mysql_connect("$host_rfe:$port",$login_db_rfe,$pass_db_rfe); 
    exit; 
} else { 
    $sqlconn=mysql_connect("$host_nav:$port",$login_db_nav,$pass_db_nav); 
    exit; 
} 

Любая идея, как сделать соединение, имеющую отношение к необходимой базе данных?

+1

Старые функции 'mysql _...()' устарели и были отмечены как устаревшие давным-давно. – arkascha

+1

Yup. Пожалуйста, прекратите использовать 'mysql _ *()' функции (см. [Предупреждение в верхней части этой страницы] (http://php.net/manual/en/function.mysql-connect.php)) и рассмотрите возможность использования ['mysqli' ] (http://php.net/manual/en/book.mysqli.php) или ['pdo_mysql'] (http://php.net/manual/en/ref.pdo-mysql.php). –

+0

Мне известно об использовании mysqli, просто изменение всего скрипта займет мало времени и я его работаю. Я просто хочу знать, что случилось с моей заменой глобального $ sqlconn выше –

ответ

0

Хорошо, я нашел проблему, я просто забыл сделать SQL-указатель на мою глобальную переменную.

global $rfedatabase, $navdatabase, $host_rfe, $host_nav, $port, $login_db_rfe, $pass_db_rfe, $login_db_nav, $pass_db_nav; 

if($db == $rfedatabase){ 
    $sqlconn=mysql_connect("$host_rfe:$port",$login_db_rfe,$pass_db_rfe); 
} else { 
    $sqlconn=mysql_connect("$host_nav:$port",$login_db_nav,$pass_db_nav); 
} 
Смежные вопросы