Foros del Web » Programando para Internet » PHP »

Crear aplicacion en php que se pueda conectar a varias BD

Estas en el tema de Crear aplicacion en php que se pueda conectar a varias BD en el foro de PHP en Foros del Web. Saludos compañeros, pues lo que deseo es saber si puedo crear un archivo config o algo asi de donde pueda tomar los metodos de conexion ...
  #1 (permalink)  
Antiguo 15/02/2012, 16:43
Avatar de dontripi  
Fecha de Ingreso: enero-2006
Mensajes: 240
Antigüedad: 18 años, 3 meses
Puntos: 1
Crear aplicacion en php que se pueda conectar a varias BD

Saludos compañeros, pues lo que deseo es saber si puedo crear un archivo config o algo asi de donde pueda tomar los metodos de conexion y recepcion de datos para multiples bd, es decir que haya una especie de lista donde uno escoja que motor de bd desea utilizar y que listo la aplicacion realice las conexiones bajo ese motor, por ejemplo por defecto seria mysql, pero si escojo sql server entonces pueda funcionar asi.

no se si me hice entender, quiero que sepan que soy un desarrollador de nivel intermedio y que cualquier ayuda se las agradezco enormemente.
  #2 (permalink)  
Antiguo 15/02/2012, 16:53
 
Fecha de Ingreso: mayo-2008
Mensajes: 103
Antigüedad: 15 años, 10 meses
Puntos: 14
Respuesta: Crear aplicacion en php que se pueda conectar a varias BD

Claro que puedes! De hecho no necesitas cambiar el código demasiado:

Código PHP:
$conecta mysql_connect (Tus datos del servidor)
$conexionDB1 mysql_select_db(base de datos1$conecta)

$conexionDB2 mysql_select_db(base de datos2$conecta
El problema de esta solución es que deberás especificar en cada consulta al SQL la database. Es decir;
mysql_query($conexionDB1).

Otra alternativa si no necesitas switchear todo el rato es:

mysql_select_db(base de datos1, $conecta)
funciones a DB 1...
blablabla
blabalbla

mysql_select_db(base de datos2, $conecta)
bloblbobl
lboblbob
lbllbbobo.

Con esta solución no deberías de indicar la conexión, pero es más sucia si debes cambiar de DB todo el rato.

Saludos!
  #3 (permalink)  
Antiguo 15/02/2012, 17:26
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: Crear aplicacion en php que se pueda conectar a varias BD

dontripi, creo que lo que buscas es PDO. Usando PDO solo deberas de indicarle que driver (motor bd) quieres usar. Mysql, PostgreSQL...

Saludos,
  #4 (permalink)  
Antiguo 17/02/2012, 08:21
 
Fecha de Ingreso: agosto-2006
Ubicación: Girardot
Mensajes: 27
Antigüedad: 17 años, 8 meses
Puntos: 2
Respuesta: Crear aplicacion en php que se pueda conectar a varias BD

Hola muy buenos días

Lo que dice OsSk4R es cierto te toca trabajar con PDO. Te dejo el script de configuración que empleo actualmente:

config.inc.php

<?php

#Variables de conexión al Servidor de la Base de datos
$svr = 'localhost'; #Servidor de la Base de datos.
$usr = 'root'; #Usuario del Servidor de la Base de datos.
$pwd = 'root'; #Contraseña del Usuario de la Base de datos.
$dbh = 'db_dukcar'; #Nombre de la Base de datos.
$port = 3306; #Puerto de conexión del servidor de la Base de datos.



#Definición de constantes - Motores de Bases de datos
define('MySQL', 'MySQL');
define('PostgreSQL', 'PgSQL');
define('SQLite', 'SQLite');
define('Informix', 'Informix');
define('ORACLE', 'Oracle');
define('DNS', 'winDNS');
define('DBLIB', 'winDBLIB');
define('DB2', 'ibmDB2');
define('FIREBIRD', 'FireBirdDB');

#Motor de la Bases de Datos a usar
$dbMotor = MySQL;

#Compara la variable o expresión ($dbMotor) con los Mototres de las Bases de Datos
switch($dbMotor){
case "MySQL":
/* Conexión al Servidor MySQL */
try {
$lnk = new PDO("mysql:host=$svr;dbname=$dbh",$usr,$pwd);
//$lnk->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEP TION);
//$lnk->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNI NG);
//$lnk->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILEN T);
}
catch(PDOException $e) {
echo $e->getMessage();
}
break;
case "PostgreSQL":
/* Conexión al Servidor PostgreSQL */
try {
$lnk = new PDO("pgsql:dbname=$dbh;host=$svr",$usr,$pwd);
}
catch(PDOException $e){
echo $e->getMessage();
}
break;
case "SQLite":
/* Conexión al Servidor SQLite */
try {
$lnk = new PDO("sqlite:/ruta/$dbh");
}
catch(PDOException $e) {
echo $e->getMessage();
}
break;
case "Informix":
/* Conexión al Servidor Informix */
try {
$lnk = new PDO("informix:DSN=$dbh", $usr, $pwd);
}
catch (PDOException $e) {
echo $e->getMessage();
}
break;
case "ORACLE":
/* Conexión al Servidor Oracle */
try {
$lnk = new PDO("OCI:dbname=$dbh;charset=UTF-8", $usr, $pwd);
}
catch (PDOException $e) {
echo $e->getMessage();
}
break;
case "DNS":
/*
Hay muchas conexiones ODBC que puede crear, aquí se presenta,
cómo conectarse a una base de datos de cuentas de MS Access.
La ruta de acceso especificada es c:\accounts.mdb.
*/
try {
$lnk = new PDO("odbc:Driver={Microsoft Access Driver(*.mdb)};Dbq=C:\accounts.mdb;Uid=Admin");
}
catch (PDOException $e) {
echo $e->getMessage();
}
break;
case "DBLIB":
/* base de datos específico de Windows, DBLIB */
try{
$lnk = new PDO("dblib:host=$svr:$port;dbname=$dbh",$usr,$pwd) ;
}
catch (PDOException $e){
echo $e->getMessage();
}
break;
case "DB2":
/* Conexión a DB2 IBM */
try{
$lnk = new PDO("ibm:DRIVER {IBM DB2 ODB DRIVER}; DATABASE=$dbh; HOSTNAME=$svr; PROTOCOL=TCPIP",$usr, $pwd);
}
catch (PDOException $e) {
echo $e->getMessage();
}
break;
case "FIREBIRD":
/* Servidor Firebird */
try{
$lnk = new PDO("firebird:dbname=localhost:C:\Programs\Firebir d\DATABASE.FDB",$usr, $pwd);
}
catch (PDOException $e) {
echo $e->getMessage();
}
break;
default:
echo "<b>Error:</b> No se reconoce el motor de la Base de datos.";
}
?>


Espero sea de tu ayuda..
  #5 (permalink)  
Antiguo 17/02/2012, 09:29
Avatar de dontripi  
Fecha de Ingreso: enero-2006
Mensajes: 240
Antigüedad: 18 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Crear aplicacion en php que se pueda conectar a varias BD

Muchisimas Gracias neshken, voy empezar a implementar esto en mi aplicacion es que la estoy terminando pero quiero sacar una nueva version que se pueda conectar a multiples motores, cuando la termine espero poder publicarla para que sea una herramienta de codigo abierto, bueno esos son los planes, muchas gracias a todos por sus contribuciones

Etiquetas: bd, mysql, sql, aplicaciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:13.