I need to make an appointment using 2 different banks simultaneously.
One is mysql
and another firebird
. It is already working separately, I would like to make the connection without having to close one to open the other.
Example
$sql_bd1 = connection::selectMysql('SELECT * FROM tabela_mysql');
$sql_bd2 = connection::selectIbase('SELECT * FROM tabela_firebird');
Class connection
<?php
class connection {
public static $conn;
public static function open($name) {
if (file_exists("config/{$name}.ini")) {
$db = parse_ini_file("config/{$name}.ini");
} else {
throw new exception("Arquivo '$name' nao encontrado");
}
$user = isset($db['user']) ? $db['user'] : NULL;
$pass = isset($db['pass']) ? $db['pass'] : NULL;
$name = isset($db['name']) ? $db['name'] : NULL;
$host = isset($db['host']) ? $db['host'] : NULL;
$type = isset($db['type']) ? $db['type'] : NULL;
$port = isset($db['port']) ? $db['port'] : NULL;
switch ($type) {
case 'pgsql':
$port = $port ? $port : '5432';
$conn = new PDO("pgsql:dbname={$name}; user={$user}; password={$pass};host=$host;port={$port};");
break;
case 'mysql':
$port = $port ? $port : '3306';
$conn = new PDO("mysql:host={$host};port={$port};dbname={$name}", $user, $pass);
break;
case 'sqlite':
$conn = new PDO("sqlite:{$name}");
break;
case 'ibase':
$conn = new PDO("firebird:dbname={$name}", $user, $pass);
break;
case 'oci8':
$conn = new PDO("oci:dbname={$name}", $user, $pass);
break;
case 'mssql':
$conn = new PDO("mssql:host={$host},1433;dbname={$name}", $user, $pass);
break;
}
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$conn = $conn;
}
public static function select($sql) {
return self::$conn->query($sql);
}
public static function exec($sql, $ret_id = false) {
$retorno = self::$conn->exec($sql);
if ($ret_id)
$retorno = self::$conn->lastInsertId();
return $retorno;
}
public static function close() {
self::$conn = null;
}
}