Foros del Web » Programando para Internet » PHP »

Acceso a bd

Estas en el tema de Acceso a bd en el foro de PHP en Foros del Web. Tengo una página web que extrae datos de una base de datos en mysql, el caso es que quiero hacer el código independiente de la ...
  #1 (permalink)  
Antiguo 04/11/2005, 13:06
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
Acceso a bd

Tengo una página web que extrae datos de una base de datos en mysql, el caso es que quiero hacer el código independiente de la base de datos a usar, existe alguna manera de hacerlo?

Actualmente si me cambio de mysql a SQL Server tengo que modificar todo el código sustituyendo las funciones propias de mysql por las mismas pero para mssql...

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #2 (permalink)  
Antiguo 05/11/2005, 15:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, .. tienes lo que llaman "capas de abstracción de base de datos" .. en PHP implementadas como "classe's" normalmente.

Una de las más fomosas es (la usa creo que PHP-Nuke, phpBB y vários CMS's entre otros):

ADOdb
http://adodb.sourceforge.net/

Lo bueno que tiene ADOdb es que implementa muchos métodos própios para hacer lo más independiente posible el SQL que emplees sea cual sea el RDBMS (motor de BD) que uses.

Por ejemplo .. en SQL hay muchas diferencias a la hora de intentar "paginar" resultados ... unas usan LIMIT (Mysql, PostgreSQL y pese a eso se usan de forma diferente) .. otras "TOP" (MS SQL Server y algunas que entran por ODBC) .. Por ende, en estos casos no sólo el SQL cambiará para hacer una taréa de paginado sino tu código (pues no trabajan igual sus parámetros ni lo que hacen exactamente) .. Todo esto supuestamente ADOdb por ejemplo tiene métodos para solventar este detalle, .. tu indicas un SQL "básico" muy standard y ADOdb (su método adecuado) se encarga del resto según el RDBMS que estés usando.

Pero no es la única .. hay muchas, .. en sitios como www.phpclasses.org puedes ver más.

Un saludo,
  #3 (permalink)  
Antiguo 07/11/2005, 13:41
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
Que opináis de esta función? No bastaría para "abstraer" la base de datos a usar? Cuando quisiese cambiar de SGBD solo tendría que modificar esta función dejando el resto del código intacto...

Código:
//Previamente nos conectamos a la bbdd

function consultar($consulta){

	$resultado=mysql_query($consulta);

	if (!$resultado) return false;
	else{
//Si la consulta se ha enviado correctamente
		$palabras=explode(" ",trim($consulta));
		$datos=array();//Inicializamos un array que contendrá el resultado de nuestra consulta
		
		if (strtolower($palabras[0])=="select"){//Si es una consulta de selección
			$j=0;
			while ($fila=mysql_fetch_row($resultado)){
				for ($i=0;$i<count($fila);$i++) $datos[$j][$i]=$fila[$i];
			$j++;
			}
			return $datos;
		}
		else return true;
	}
}
Saludos y gracias por la info.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)

Última edición por DjNelson; 07/11/2005 a las 13:49
  #4 (permalink)  
Antiguo 07/11/2005, 14:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm Si, en parte cualquier "capa de abastracción" de BD hace eso en su métodos típicos .. sólo que separan más el código y sobre todo ya incorporan el hecho de gestionar várias BD distintas.

Uno de estos sistemas que te menciono que funcionan mas o menos así (pocos métodos y muy prácticos) es:
http://justinvincent.com/home/articles.php?articleId=2

Incorpora un anexo (classe) extra para paginación de resultados que se engancha con esa classe directamente .. resolviendo así el 99.9% de casos al trabajar con BD. Revisalo .. está bastante bien.

Ahora .. si luego quieres re-encapsular más todavía tu código y crear funciones como la que has creado .. OK.

Un saludo,
  #5 (permalink)  
Antiguo 10/11/2005, 13:37
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 14 años, 4 meses
Puntos: 0
He intentado varias veces bajarme el archivo del enlace que dejas pero no hay manera, lo intentaré a mi manera.

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
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 14:30.