You are on page 1of 4

Olvidaste tu usuario o clave?

Usuario

Contrasea

Entrar

o registrate

Buscar..

Foros

Blog

Tutoriales

Cursos

Videotutoriales

Comic

Publica un tutorial

Qu es Cristalab?

Tags

Ejemplos
Buscar

Contctanos

Anime

Qu quieres buscar?
Tutoriales / Crear una clase para conectar a la base de datos (III)

Crear una clase para conectar a la base de datos (III)


Por marcosdev el 11 de Noviembre de 2008 con 14,009 visitas PHP, MySQL y Servidor Otros tutoriales por marcosdev.

Te puede interesar
Clase de PHP para crear galeras dinmicas Redimensionar imgenes en PHP con

Continuemos mejorando nuestra clase. En el ltimo tip, creamos una clase nueva para leer un fichero de configuracin. Este fichero contena los valores que nos interesase para realizar la conexin a la base de datos. Luego estuvimos adaptando el fichero de conexin a la base de datos para que fuera capaz de instanciar el objeto Conf y pudiera tener acceso a los datos necesarios para realizar la conexin. En esta siguiente parte del tutorial vamos a realizar una sencilla mejora para hacer que nuestra clase sea capaz de conectarse a diferentes tipos de base de datos. En concreto vamos a ver cmo adaptarla para que se conecte a PostgreSQL. Lo primero que debemos realizar es agregar una nueva variable a nuestro fichero de configuracin: config.php
Cdigo :

clases abstractas Certificados de Seguridad y SSL bien explicados Validar formularios HTML con PHP, AJAX y JQuery Como usar AJAX en PHP sin JavaScript (XAJAX) Crear avatares aleatorios en PHP con GD e imgenes PNG Comparar textos usando IA con la Distancia de Levenshtein Envo de correos desde un servidor local

Mostrar todos los tags de tu blog en Wordpress Manejar strings de tamao variable en PHP con str_pad

/ / D a t o sd ec o n f i g u r a c i nd el ac o n e x i nal ab a s ed ed a t o s / / S e r v i d o r $ h o s t = ' l o c a l h o s t ' ; / / U s u a r i o $ u s e r = ' u s e r ' ; / / P a s s w o r d $ p a s s w o r d = ' t e s t ' ; / / B a s ed ed a t o sau t i l i z a r $ d b = ' t e s t D B ' ; / / Q u s i s t e m ag e s t o rd eb a s ed ed a t o su t i l i z a m o s ,m y s q l ,o r a c l e ,. . . $ d b T y p e = ' m y s q l '

Regresar a los tutoriales

Podemos observar una nueva ltima variable llamada dbType la cual utilizaremos para saber que tipo de base de datos vamos a utilizar. Ahora vamos a adaptar nuestra clase Conf para que lea dicho valor y lo guarde ($_dbType). Adems agregaremos una funcin getDBType() para poder obtener dicho valor.

Conf.class.php
Cdigo :

C l a s sC o n f { p r i v a t e$ _ d o m a i n ; p r i v a t e$ _ u s e r d b ; p r i v a t e$ _ p a s s d b ; p r i v a t e$ _ h o s t d b ; p r i v a t e$ _ d b ; p r i v a t e$ _ d b T y p e ; p r i v a t es t a t i c$ _ i n s t a n c e ; p r i v a t ef u n c t i o n_ _ c o n s t r u c t ( ) { r e q u i r e' c o n f i g . p h p ' ; $ t h i s > _ d o m a i n = $ d o m a i n ; $ t h i s > _ u s e r d b = $ u s e r ; $ t h i s > _ p a s s d b = $ p a s s w o r d ; $ t h i s > _ h o s t d b = $ h o s t ; $ t h i s > _ d b = $ d b ; $ t h i s > _ d b T y p e = $ d b T y p e ; } p r i v a t ef u n c t i o n_ _ c l o n e ( ) {} p r i v a t ef u n c t i o n_ _ w a k e u p ( ) {} p u b l i cs t a t i cf u n c t i o ng e t I n s t a n c e ( ) { i f( ! ( s e l f : : $ _ i n s t a n c ei n s t a n c e o fs e l f ) ) { s e l f : : $ _ i n s t a n c e = n e ws e l f ( ) ; } r e t u r ns e l f : : $ _ i n s t a n c e ; } p u b l i cf u n c t i o ng e t U s e r D B ( ) { $ v a r = $ t h i s > _ u s e r d b ; r e t u r n$ v a r ; } p u b l i cf u n c t i o ng e t H o s t D B ( ) { $ v a r = $ t h i s > _ h o s t d b ; r e t u r n$ v a r ; } p u b l i cf u n c t i o ng e t P a s s D B ( ) { $ v a r = $ t h i s > _ p a s s d b ; r e t u r n$ v a r ; } p u b l i cf u n c t i o ng e t D B ( ) { $ v a r = $ t h i s > _ d b ; r e t u r n$ v a r ; } p u b l i cf u n c t i o ng e t D B T y p e ( ) { $ v a r = $ t h i s > _ d b T y p e ; r e t u r n$ v a r ; } }

Por ltimo los cambios ms significativos vienen dentro de nuestra clase Db. Dentro de las funciones de conectar, ejecutar una query y obtener una fila de resultados es dnde podemos ver cmo en funcin del valor tipo de base de datos, la clase utiliza unas funciones u otras. Db.class.php
Cdigo :

/ *C l a s ee n c a r g a d ad eg e s t i o n a rl a sc o n e x i o n e sal ab a s ed ed a t o s* /

C l a s sD b { p r i v a t e$ s e r v i d o r ; p r i v a t e$ u s u a r i o ; p r i v a t e$ p a s s w o r d ; p r i v a t e$ b a s e _ d a t o s ; p r i v a t e$ t i p o ; p r i v a t e$ l i n k ; p r i v a t e$ s t m t ; p r i v a t e$ a r r a y ; p r i v a t es t a t i c$ _ i n s t a n c e ; / * L af u n c i nc o n s t r u c te sp r i v a d ap a r ae v i t a rq u ee lo b j e t op u e d as e r c r e a d om e d i a n t en e w * / p r i v a t ef u n c t i o n_ _ c o n s t r u c t ( ) { $ t h i s > s e t C o n e x i o n ( ) ; $ t h i s > c o n e c t a r ( ) ; } / * M t o d op a r ae s t a b l e c e rl o sp a r m e t r o sd el ac o n e x i n * / p r i v a t ef u n c t i o ns e t C o n e x i o n ( ) { $ c o n f=C o n f : : g e t I n s t a n c e ( ) ; $ t h i s > s e r v i d o r = $ c o n f > g e t H o s t D B ( ) ; $ t h i s > b a s e _ d a t o s = $ c o n f > g e t D B ( ) ; $ t h i s > u s u a r i o = $ c o n f > g e t U s e r D B ( ) ; $ t h i s > p a s s w o r d = $ c o n f > g e t P a s s D B ( ) ; $ t h i s > t i p o = $ c o n f > g e t D B T y p e ( ) ; } / * E v i t a m o se lc l o n a j ed e lo b j e t o .P a t r nS i n g l e t o n * / p r i v a t ef u n c t i o n_ _ c l o n e ( ) {} p r i v a t ef u n c t i o n_ _ w a k e u p ( ) {} / * F u n c i ne n c a r g a d ad ec r e a r ,s ie sn e c e s a r i o ,e lo b j e t o .E s t ae sl a f u n c i nq u ed e b e m o sl l a m a rd e s d ef u e r ad el ac l a s ep a r ai n s t a n c i a re l o b j e t o ,ya s ,p o d e ru t i l i z a rs u sm t o d o s * / p u b l i cs t a t i cf u n c t i o ng e t I n s t a n c e ( ) { i f( ! ( s e l f : : $ _ i n s t a n c ei n s t a n c e o fs e l f ) ) { s e l f : : $ _ i n s t a n c e = n e ws e l f ( ) ; } r e t u r ns e l f : : $ _ i n s t a n c e ; } / * R e a l i z al ac o n e x i nal ab a s ed ed a t o s . * / p r i v a t ef u n c t i o nc o n e c t a r ( ) { s w i t c h( $ t h i s > t i p o ) { c a s e' m y s q l ' : $ t h i s > l i n k = m y s q l _ c o n n e c t ( $ t h i s > s e r v i d o r , $ t h i s > u s u a r i o ,$ t h i s > p a s s w o r d ) ; m y s q l _ s e l e c t _ d b ( $ t h i s > b a s e _ d a t o s , $ t h i s > l i n k ) ; @ m y s q l _ q u e r y ( " S E TN A M E S' u t f 8 ' " ) ; b r e a k ; c a s e' p o s t g r e s s ' : $ t h i s > l i n k = p g _ c o n n e c t ( " h o s t = " . $ t h i s > s e r v i d o r . "d b n a m e = " . $ t h i s > b a s e _ d a t o s . "u s e r = " . $ t h i s > u s u a r i o . " p a s s w o r d = " . $ t h i s > p a s s w o r d ) b r e a k ; b r e a k ; } } / * M t o d op a r ae j e c u t a ru n as e n t e n c i as q l * / p u b l i cf u n c t i o ne j e c u t a r ( $ s q l ) { s w i t c h( $ t h i s > t i p o ) { c a s e' m y s q l ' : $ t h i s > s t m t = m y s q l _ q u e r y ( $ s q l , $ t h i s > l i n k ) ; b r e a k ; c a s e' p o s t g r e s s ' :$ t h i s > s t m t = p g _ E u e r y ( $ t h i s > l i n k , $ s q l ) ; b r e a k ; b r e a k ; } r e t u r n$ t h i s > s t m t ; } / * M t o d op a r ao b t e n e ru n af i l ad er e s u l t a d o sd el as e n t e n c i as q l * /

p u b l i cf u n c t i o no b t e n e r _ f i l a ( $ s t m t , $ f i l a ) { s w i t c h( $ t h i s > t i p o ) { c a s e' m y s q l ' : i f( $ f i l a = = 0 ) { $ t h i s > a r r a y = m y s q l _ f e t c h _ a r r a y ( $ s t m t ) ; } e l s e { m y s q l _ d a t a _ s e e k ( $ s t m t , $ f i l a ) ; $ t h i s > a r r a y = m y s q l _ f e t c h _ a r r a y ( $ s t m t ) ; } b r e a k ; c a s e' p o s t g r e s s ' :i f( $ f i l a = = 0 ) { $ t h i s > a r r a y = p g _ f e t c h _ r o w ( $ s t m t ) ; } e l s e { $ t h i s > a r r a y = p g _ f e t c h _ r o w ( $ s t m t , $ f i l a ) ; } b r e a k ; b r e a k ; } r e t u r n$ t h i s > a r r a y ; } }

En el siguiente y ltima parte, veremos cmo controlar los errores. Un saludo Ficheros del ejemplo (en formato UTF-8 ) Temas relacionados: Crear una clase para conectar a la base de datos Crear una clase para conectar a la base de datos (II)

Tw ittear

This URLs or Page has been blocked.


Envia un comentario (8)

clases php

Cambiar limite de posts en El Loop en templates de Wordpress

Personalizar error 404 en Joomla

Cmo llenar 2 ComboBox usando Flex, PHP y MySQL

Por Quique el 12 de Noviembre de 2008

No sera mejor armar una jerarquia teniendo como subclases de Db a Mysql y PosgreSQL ? Saludos!

Por marcosdev el 12 de Noviembre de 2008

You might also like