Anda di halaman 1dari 3

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 base de datos con PHP

Crear una clase para conectar a base de datos con PHP


Por marcosdev el 29 de Octubre de 2008 con 66,953 visitas PHP, MySQL y Servidor Otros tutoriales por marcosdev.

Te puede interesar
Crear una clase para conectar a base de datos con PHP (II) Crear una clase para conectar a la base

Cuando un programador web comienza con PHP, una de las tareas ms habituales es la de realizar conexiones y querys a la base de datos. Normalmente, muchsima gente utiliza funciones php para conectarse a una base de datos directamente en el cdigo como puede ser mysql_connect (para conectarse a una base de datos MySQL) o pg_connect (para conectarse a una base de datos Postgress). Esta forma de trabajar implica un problema muy serio si nuestro proyecto va orientado a una intranet, en la cual, de la noche a la maana pueden tener la necesidad de cambiar la base de datos por otra diferente (por ejemplo, que una intranet crezca mucho y necesiten cambiar a una base de datos Oracle por funcionalidades especficas). Si se da este caso podramos tener un problema muy grave; deberamos revisar todo el cdigo que hemos escrito en busca de esas funciones especficas y adaptarlas a la nueva base de datos. Para solventar este problema (crear una capa que nos abstraiga de que base de datos estemos utilizando) y adems crear posibles funcionalidades nuevas, vamos a crear una clase muy sencilla la cual nos permita conectarnos a la base de datos. Esta clase la vamos a crear siguiendo el patrn de diseo Singleton . Los patrones de diseo son soluciones a problemas tpicos de programacin que se repiten contnuamente. El patrn Singleton nos ayuda a crear una clase la cual, si intentamos llamarla dos veces, realmente slo es una instancia. En vez intentar crear el objeto, lo que haremos es instanciarlo. Esto nos permite conectarnos a la base de datos en cualquier punto del cdigo (dentro de funciones, dentro de objectos,) sin necesidad de crear ms conexiones o tener que pasarla por parmetro (en el caso de querer que una funcin determinada que tengamos creada utilice una conexin existente y no cree otra nueva). La estructura de la clase sera la siguiente:

de datos (IV)
Por m arcosdev 19 comentarios

Cmo hacer un login de usuarios en PHP

Crear e implementar el patrn de diseo Singleton en PHP Introduccin al framework CodeIgniter

Crear un archivo XML con un resultado de MySQL en PHP Conectar Flex 3 con PHP y MySQL

Cmo instalar un servidor MySQL y PHP

HMVC: Extensin para crear mdulos o plugins en Codeigniter Calcular el tiempo de respuesta de una consulta SQL en PHP Regresar a los tutoriales

Cdigo :

< ? p h p / *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 = ' l o c a l h o s t ' ; p r i v a t e$ u s u a r i o = ' u s e r ' ;

p r i v a t e$ p a s s w o r d = ' t e s t ' ; p r i v a t e$ b a s e _ d a t o s = ' t e s t D B ' ; 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 ; s 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 > c o n e c t a r ( ) ; } / * 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 ( ) {} / * 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 ( ) { $ 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 ' " ) ; } / * 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 ) { $ 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 ) ; 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 ) { 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 ) ; } r e t u r n$ t h i s > a r r a y ; } / / D e v u e l v ee l l t i m oi dd e li n s e r ti n t r o d u c i d o p u b l i cf u n c t i o nl a s t I D ( ) { r e t u r nm y s q l _ i n s e r t _ i d ( $ t h i s > l i n k ) ; } } ? >

En esta clase, cmo podemos observar, existen varios mtodos para conectar, obtener resultados de una query as como el ltimo id que se ha creado mediante un Insert en un campo clave autoincremental. Ahora veamos como utilizar esta clase:

Cdigo :

< ? p h p / * I n c l u i m o se lf i c h e r od el ac l a s e * /

r e q u i r e' D b . c l a s s . p h p ' ; / * C r e a m o sl ai n s t a n c i ad e lo b j e t o .Y ae s t a m o sc o n e c t a d o s * / $ b d = D b : : g e t I n s t a n c e ( ) ; / * C r e a m o su n aq u e r ys e n c i l l a * / $ s q l = ' S E L E C TN O M B R EF R O MC L I E N T E S ' ; / * E j e c u t a m o sl aq u e r y * / $ s t m t = $ b d > e j e c u t a r ( $ s q l ) ; / * R e a l i z a m o su nb u c l ep a r ai ro b t e n i e n d ol o sr e s u l t a d o s * / w h i l e( $ x = $ b d > o b t e n e r _ f i l a ( $ s t m t , 0 ) ) { e c h o$ x [ ' N O M B R E ' ] . ' < b r/ > ' ; } ? >

Muy sencillo y prctico. Esta clase es muy (MUY) mejorable. Por ejemplo, en el siguiente tip veremos como utilizar un fichero de configuracin que ser utilizado por una clase llamada Conf, la cual ser utilizada a su vez por esta clase que acabamos de crear. Adems, introducir control de errores de conexin, niveles de seguridad para utilizar diferentes perfiles segn el mbito de la conexin, Esta clase va dirigida a aquellas personas que todava no utilizan un Framework y siguen trabajando directamente sobre PHP.

Tw ittear

This URLs or Page has been blocked.


Envia un comentario (60)

m ysql php poo singleton

Anlisis y extensin de clases en PHP con ReflectionMethod

10 errores comunes programando orientado a objetos en PHP

Crear una base de datos en MySQL

Anterior 1

Por Romy Bompart el 12 de Abril de 2012

Excelente explicacin.. una pregunta... que hace paso a paso esta funcion.. soy nuevo en php public static function getInstance(){ if (!(self::$_instance instanceof self)){ self::$_instance=new self(); } return self::$_instance; }

Anda mungkin juga menyukai