2016-04-20 16 views
1

Ich habe ein bereites virtuelles Flugbuchungssystem von einem Freund erhalten, um es zu benutzen und es basiert auf 2 Datenbanken unter 1 Benutzername und Passwort.Eine dynamische Verbindung zum Datenbankserver herstellen

Das Problem, das mein Host ist, generiert einen eindeutigen Host, Benutzername und Kennwort für jede Datenbank. Die gute Sache in diesem System ist, dass alle Verbindungsskripte in einer Datei sind und ich die meisten Teile modifiziert habe, aber ich habe auf dem Hauptteil festgeklebt; Funktion change_db. Hier

ist mysqlexec Code zuerst:

<?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; 
} 
?> 

Das System benötigt immer sowohl Datenbank über die Funktionen hängen zu verbinden. Anfänglich ist die Verbindung mit $ rfedatabase und dann muss es zu $ rfedatabase tauschen und dann vielleicht zurück zum ersten gehen, so weiter. Um das Datenbank-Swapping durchzuführen, verwendet das System die Funktion change_db. Beispiel:

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

Also hier kommt das Problem mit global $ sqlconn;. Die Verbindung wird immer zu $ rfedatabase Host und wird nicht auf den anderen wechseln.

Ich habe geändert global $ sqlconn; mit diesem Code aber nicht funktioniert hat:

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; 
} 

Jede Idee, wie die Verbindung, die für die benötigte Datenbank machen?

+1

Die alten 'mysql _...()' Funktionen sind veraltet und wurden vor langer Zeit als veraltet markiert. – arkascha

+1

Yup. Bitte hören Sie auf, mysql _ *() '-Funktionen zu verwenden (siehe [Warnung oben auf dieser Seite] (http://php.net/manual/en/function.mysql-connect.php)) und erwägen Sie [mysqli' ] (http://php.net/manual/en/book.mysqli.php) oder ['pdo_mysql'] (http://php.net/manual/en/ref.pdo-mysql.php) statt. –

+0

Ich bin mir bewusst, mit mysqli, ist nur die Änderung der gesamten Skripte dauert wenig Zeit und arbeite ich. Ich will nur wissen, was ist falsch von meinem Ersetzen von globalen $ sqlconn oben –

Antwort

0

In Ordnung, ich habe das Problem gefunden, ich habe nur vergessen, SQL-Zeiger auf meine globale Variable zu tun.

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); 
} 
Verwandte Themen