Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Consulta MYSQL

Estas en el tema de Consulta MYSQL en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola yo tengo una clase para conectar con la MYSQL pero necesito consultar a dos bases de datos distintas así funcionaria correctamente? Código PHP: class  ...
  #1 (permalink)  
Antiguo 11/03/2010, 12:48
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Exclamación Consulta MYSQL

Hola yo tengo una clase para conectar con la MYSQL pero necesito consultar a dos bases de datos distintas así funcionaria correctamente?


Código PHP:

class MySQL{   
 private 
$conexion;   
  private 
$total_consultas;   
 
  public function 
MySQL(){   
  if(!isset(
$this->conexion)){   
  
$dada=$this->conexion = (mysql_connect("localhost","XXX","XXX")) or die(mysql_error());   
  
mysql_select_db("XXX",$this->conexion) or die(mysql_error());   
  }   
  }
 public function 
consulta($consulta){   
  
$this->total_consultas++;   
  
$resultado mysql_query($consulta,$this->conexion);   
  if(!
$resultado){   
  echo 
'MySQL Error dice: ' mysql_error();   
  exit;   
  }   
  return 
$resultado;    
  }   
 public function 
fetch($consulta){    
  return 
mysql_fetch_array($consulta);   
  }   
 public function 
cuenta($consulta){    
  return 
mysql_num_rows($consulta);   
  }  
  public function 
cerrar($consulta){    
  return 
mysql_close($consulta);   
  }   
 public function 
getTotalConsultas(){   
  return 
$this->total_consultas;   
  }   
  }
// 2º BASE DE DATOS
class MySQL_2{   
 private 
$conexion2;   
  private 
$total_consultas2;   
 
  public function 
MySQL2(){   
  if(!isset(
$this->conexion2)){   
  
$dada2=$this->conexion2 = (mysql_connect("localhost","XXX","XXX")) or die(mysql_error());   
  
mysql_select_db("XXX",$this->conexion2) or die(mysql_error());   
  }   
  }
 public function 
consulta2($consulta2){   
  
$this->total_consultas2++;   
  
$resultado2 mysql_query($consulta2,$this->conexion2);   
  if(!
$resultado2){   
  echo 
'MySQL Error dice: ' mysql_error();   
  exit;   
  }   
  return 
$resultado2;    
  }   
 public function 
fetch2($consulta2){    
  return 
mysql_fetch_array($consulta2);   
  }   
 public function 
cuenta2($consulta2){    
  return 
mysql_num_rows($consulta2);   
  }  
  public function 
cerrar2($consulta2){    
  return 
mysql_close($consulta2);   
  }   
 public function 
getTotalConsultas2(){   
  return 
$this->total_consultas2;   
  }   
  } 

e duplicado la clase llamandole a todo (2) es correcto? otra consulta yo e añadido esta funcion.

Código PHP:
  public function cerrar2($consulta2){    
  return 
mysql_close($consulta2);   
  } 
para cerrar la conexión a la db se hace así o como cerraría la conexión? saludos!
y gracias por la ayuda.
__________________
Si la vida te da la espalda tocale el culo
  #2 (permalink)  
Antiguo 11/03/2010, 12:53
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Consulta MYSQL

POruqe deberias consultar 2 bases distintas?.. el codigo esta, pero explicate algo mejor.. cual es tu objetivo y de que se trata tu proyecto... saludos
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 11/03/2010, 12:54
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

necesito consultar dos bases de datos distintas para sacar resultados de un usuario. una estadísticas de un servicio y otras estadísticas de otros y en la misma pagina php necesito saber los datos de cada una.
__________________
Si la vida te da la espalda tocale el culo
  #4 (permalink)  
Antiguo 11/03/2010, 12:55
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Consulta MYSQL

lo mejor sera, ya que usas clases tener el constructor y que acepte los parametros de host, usuario, pass y base, luego solo creas 2 instancias una para la primera conexion y la otra, pues a la otra jajajaja(creo que era obvio)

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 11/03/2010, 12:57
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

es que soy nuevo trabajando con clases disculpar mi inorancia pero como le paso los parametros a la clase?
__________________
Si la vida te da la espalda tocale el culo
  #6 (permalink)  
Antiguo 11/03/2010, 13:01
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Consulta MYSQL

Creo que no es buena idea manejarse con 2 bases de datos, si lo que buscas son informaciones afines.. lo correcto seria consultar a 2 o mas tablas desde una misma base de datos.

si haces
mysql_close($consulta2);
Cierras la conexion identificada por $consulta2

si haces
mysql_close();
cierra la última conexión establecida.

Es muy útil saberlo si en tu script usas mas de una conexión, sino, mysql_close(); será suficiente.

espero te sea util.. y si, es correcto, puedes generar 2 concexiones, pero es muy tedioso manejar 2.. saludos
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 11/03/2010, 13:05
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Consulta MYSQL

yo tengo algo como esto
Código PHP:
Ver original
  1. class Conectar{
  2.     private     $resultado;
  3.     protected   $cnx;
  4.     public      $devolverError=false;//si es true devuelve el resultado y false lo termina con die
  5.  
  6.     public function __construct($server='',$user='',$pass='',$base=''){
  7.         //si le envio los parametros
  8.         if(!empty($server) && !empty($user) && !empty($base)){
  9.             $this->cnx=@mysqli_connect($server,$user,$pass,$base);
  10.         }else{
  11.             //por si quiero usar constantes
  12.             $this->cnx=@mysqli_connect(LOCALHOST,USUARIO,PASSWORD,BASE);
  13.         }
  14.         if(!$this->cnx){
  15.             self::getError(1);//si ocurre error se llama a la funcion que nos devuelve el error
  16.         }  
  17.     }
sol es una parte de mi código, pero creo que te servira de referencia, otra cosa, uso mysqli_ en vez de mysql_.
Normalmente uso un archivo con constantes de conexion, pero si necesito(que me a pasado) hacer una nueva conexión solo creo la instancia con new y paso los parametros correspondientes
ejemplo:
Código PHP:
Ver original
  1. $conexion1= new Conectar('localhost','user1','pass1','base1');
  2. $conexion2= new Conectar('localhost','user2','pass2','base2');
con esto tengo 2 conexciones.
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #8 (permalink)  
Antiguo 11/03/2010, 13:43
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

bien me sirvio tu ejemplo y lo adapte a mi clase y perfecto pero tengo otra consulta haber si la podemos solucionar..

puesto que no en todas las paginas necesito las dos conexiones como podemos hacer para yo en la clase abra las conexion a la clase con los datos desde la misma clase y asi si se cambia de usuario o de db pues no hay que ir cambiado todo en cada pagina me explico:


clasemysql.php

AQUI TENEMOS LA CLASE y a continuacion podria hacer esto?

function conexion_base1(){
$db = new MySQL('localhost','XXX','XXX','XXX');
}
function conexion_base2()(){
$db = new MySQL('localhost','XXX','XXX','XXX');
}
function conexion_base3()(){
$db = new MySQL('localhost','XXX','XXX','XXX');
}


Y LUEGO EN la pagina donde necesito una o otra hacer la llamada a la función para ejecutar la conexion? algo asi podriamos hacer?
__________________
Si la vida te da la espalda tocale el culo
  #9 (permalink)  
Antiguo 11/03/2010, 13:54
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Consulta MYSQL

Cita:
Iniciado por eits Ver Mensaje
lo mejor sera, ya que usas clases tener el constructor y que acepte los parametros de host, usuario, pass y base, luego solo creas 2 instancias una para la primera conexion y la otra, pues a la otra jajajaja(creo que era obvio)

saludos.
Hombre q ya aquí te lo han dicho. El construct de tu clase aceptará los parámetros requeridos y luego tu instancias la clase atendiendo a cual BD te quieres conectar
  #10 (permalink)  
Antiguo 11/03/2010, 13:55
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

Hombre pero no digo eso, ya pense una solución ahora la expongo.
__________________
Si la vida te da la espalda tocale el culo
  #11 (permalink)  
Antiguo 11/03/2010, 14:13
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Consulta MYSQL

Bueno es tu solución al final. (Me refiero al post tuyo anterior, el de las funciones para C/conex))
Pregunta: ¿Cómo reutilizarías tu clase si quieres conectarte a otra DB?
PD: Por favor no me respondas que haciendo otra función para otra conex
  #12 (permalink)  
Antiguo 11/03/2010, 14:20
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Consulta MYSQL

Que barbaro... es Web, no?

O estamos hablando de una base de datos para la NASA o la Policia de los Angeles?

No veo para que hacer tantas conexiones a tantas bases de datos... salvo que sea extremamente necesario. Creo que esta en el estandar normal hacer conexiones independientes para las bases de datos de cada proyecto, no veo lo malo, no el motivo de burla por ello...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #13 (permalink)  
Antiguo 11/03/2010, 14:27
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Consulta MYSQL

loncho, quizás entendiste mal, pero no me quiero burlar, al contrario, quiero ayudar como todos.
¿Te fijaste de verdad lo que quiere hacer, una función por conex a cada DB?
¿Realmente crees q es lo mejor?
Bueno pon ahora que arme su clase, y de aquí a dos años naturalmente su nivel suba. Pues quiere hacer otro proyecto, q requiere otra BD. ¿Porqué no reutilizar la clase de conex?
No estoy hablando de una BD para la NASA ni para la Policía de LA. Estoy hablando de nosotros, personas q intentamos ganarnos la vida en este ambiente (por muy mal q lo hagamos ) y debemos buscar soluciones que nos perduren.
De todas formas, por favor disculpen si alguien de veras se sintió ofendido
  #14 (permalink)  
Antiguo 11/03/2010, 14:28
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

Bueno aquí esta mi idea y solución la expongo para los que la necesiten:

Clase para conectar a 1 o varias bases de datos:

Código PHP:

class MySQL{   
 private 
$conexion;   
  private 
$total_consultas;      
  public function 
MySQL($servidor=''){   
  if(!isset(
$this->conexion)){ 
  
  switch(
$servidor){
  case 
1:
  
define("_server""xxxx");
  
define("_user""xxxx");
  
define("_pass""xxxx");
  
define("_base""xxx");
  break;
  case 
2:
  
define("_server""xxx");
  
define("_user""xxxx");
  
define("_pass""xxx");
  
define("_base""xxxx");
  break;
   case 
3:
  
define("_server""xxxx");
  
define("_user""xxxx");
  
define("_pass""xxxx");
  
define("_base""xxxx");
  break;
   }
  @
$dada=$this->conexion = (mysql_connect(_server,_user,_pass)) or die($error_conexion);   
  @
mysql_select_db(_base,$this->conexion);   
  }   
  }
 public function 
consulta($consulta){   
  
$this->total_consultas++;   
  
$resultado mysql_query($consulta,$this->conexion);   
  if(!
$resultado){   
  echo 
'MySQL Error dice: ' mysql_error(); 
  exit;   
  }   
  return 
$resultado;    
  }   
 public function 
fetch($consulta){    
  return 
mysql_fetch_array($consulta);   
  }   
 public function 
cuenta($consulta){    
  return 
mysql_num_rows($consulta);   
  }  
  public function 
cerrar($consulta){    
  return 
mysql_close($consulta);   
  }   
 public function 
getTotalConsultas(){   
  return 
$this->total_consultas;   
  }   
  } 

esta la idea que me a surgido con el ejemplo que me a iluminado eits luego llamo a la base de datos que necesite.


$db = new MySQL('1');

$db = new MySQL('2');

$db = new MySQL('3');

De esta forma a la hora de migrar solo hay que modificar los parámetros en la clase y no en cada archivo PHP que abierto la clase.

Expuesta queda para quien la necesite y a la escucha de mejoras, Saludos
__________________
Si la vida te da la espalda tocale el culo
  #15 (permalink)  
Antiguo 11/03/2010, 14:47
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Consulta MYSQL

Código PHP:
Ver original
  1. <?php
  2. class MySQL{  
  3.  private $conexion;  
  4.   private $total_consultas;
  5. function __construct($user='default',$pass='default',$db='default',$host='default'){
  6.   $this->conexion = mysql_connect($host,$user, $pass)) or die (mysql_error());  
  7.   mysql_select_db($db, $this->conexion) or die (mysql_error());
  8.   }
  9.    
  10. }

Es lo que te decían arriba, particularmente creo q es mejor solución pues así puedo reutilizar la clase sin importar a q BD deseo conectarme.
Yo que tu no usaría @ para ocultar los errores, recuerda q ellos son muy útiles en periodo de producción.
  #16 (permalink)  
Antiguo 11/03/2010, 14:47
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Consulta MYSQL

No.. la critica de la burla si era para ti...

lo de la gran base de datos, segun los recursos limitado que podemos manejar, creo que era para el amigo... no se porque usar una sola clase para una web, me parece poco sensible, obvia y de mera complicacion... salvo que este desarrollando unas web de videos, juegos y demas, que son proyectos personales.. pero no se... en fin, en esto de la programacion hay cada idea, y se respeta las decisiones de quien las toma si cree que le funciona.. al final eso es lo que importa..

PD: no creo que nadie se ofenda por esas expresiones, era solo una pregunta y presuncion de burla.. CERO ESTRES (0e3)...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #17 (permalink)  
Antiguo 11/03/2010, 14:50
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

Es un proyecto grande de telefonia no es una simple paginacion y hay que consultar en muchos operadores los cuales cada uno tiene su propia base de datos independiente ya que son distintas empresas.

Movistar
Vodafone
Orange
etc...

La verdad es que en algún momento si me han echo sentir como el tonto del grupo pero creo que los maestros comenzaron siendo alumnos y si vemos los historiales del foro de los "gurus" veremos sus comienzos, con esto no señalo a nadie solo estamos aquí para alimentar el conocimiento entre todos y para todos ¿O de que trata este foro si no? No podemos juzgar a nadie por ser lo que es puesto que por lo menos lo intenta y con intención no sabiduría un hombre movió una montañas.

Que nadie se sienta ofendido solo indico un paso a la reflexión de la humildad.

saludos y gracias.
__________________
Si la vida te da la espalda tocale el culo
  #18 (permalink)  
Antiguo 11/03/2010, 14:55
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Consulta MYSQL

Cita:
Iniciado por loncho_rojas Ver Mensaje
POruqe deberias consultar 2 bases distintas?.. el codigo esta, pero explicate algo mejor.. cual es tu objetivo y de que se trata tu proyecto... saludos
Ves... es lo que te pregunte al principio... esta bien, ahora se entiende... Pero si hubieras planteado mejor el problema, tal vez recibirias mejor asistencia, hay muchos que saben sobre esto, y otros usuarios que tal vez necesiten de esta solucion, y de tantas vueltas, sera dificil encontrar este post para una probable solucion.. tu pregunta de inicio fue:
Cita:
Hola yo tengo una clase para conectar con la MYSQL pero necesito consultar a dos bases de datos distintas así funcionaria correctamente? [...] para cerrar la conexión a la db se hace así o como cerraría la conexión?
y de repente se torno bastante complejo el tema.. en fin, ojala hayas encontrado la solucion...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #19 (permalink)  
Antiguo 11/03/2010, 14:58
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

si loncho mi idea y solución la e expuesto hay arriba no se si sera la mejor forma pero es la unica forma que se me ocurre de si migras a otra db no tener que estar cambiado en cada archivo la llamada a la clase todo depende de lo grande o pequeño que sea el proyecto y este es inmenso.


Normalmente siempre se comienza mal pero se termina exponiendo la solución ya sea por otros o uno mismo inducido por ideas..
__________________
Si la vida te da la espalda tocale el culo
  #20 (permalink)  
Antiguo 11/03/2010, 15:00
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Consulta MYSQL

genial... pero tu ya sabias lo que necesitabas... mas no importa ya... era una critica y autocritica constructiva

Saludos
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #21 (permalink)  
Antiguo 11/03/2010, 15:07
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Consulta MYSQL

Cita:
Iniciado por freedatos Ver Mensaje
si loncho mi idea y solución la e expuesto hay arriba no se si sera la mejor forma pero es la unica forma que se me ocurre de si migras a otra db no tener que estar cambiado en cada archivo la llamada a la clase todo depende de lo grande o pequeño que sea el proyecto y este es inmenso.
Normalmente siempre se comienza mal pero se termina exponiendo la solución ya sea por otros o uno mismo inducido por ideas..
Hombre, primero q todo, nadie te ha criticado, solo intentamos ayudarte.
Segundo que todo, más razón para q intentes lo que te empezó señalando eits, y yo he intentado tb seguirle el hilo. Si tienes muchas BD, creo q sería mejor la opción que te posteé arriba. Está escrita casi sin pensar y no la probé, pero lo principal es la idea.
En el constructor tu inicias tus datos, luego, cuando instancias la clase, le pasas los datos al construct, no importa cuantas sean tus BD. Te ahorras tener q hacer una case para cada diferente Conexión ¿me hago entender?
Es solo lo que te estaba diciendo, y acá poco a poco poder irnos ayudando
  #22 (permalink)  
Antiguo 11/03/2010, 15:31
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

una vez abierta como cierro la conexion con la clase por que parece que no me funciona el

$db->cerrar($dada);

ni siquiera el mysql_close();

por que puede ser?

necesito cerrar la
$db = new MySQL('1');

para poder abrir la
$db = new MySQL('2');
__________________
Si la vida te da la espalda tocale el culo
  #23 (permalink)  
Antiguo 11/03/2010, 15:38
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Consulta MYSQL

Código PHP:
Ver original
  1. <?php
  2. function closeMysql($conex){
  3.  mysql_close($conex);
  4. }
  5. ?>

$conex es la conexión que quieres cerrar, evidentemente
  #24 (permalink)  
Antiguo 11/03/2010, 15:41
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Respuesta: Consulta MYSQL

no entiendo de donde sale $conex ?

yo tengo esto:
$dada=$this->conexion = (mysql_connect(
__________________
Si la vida te da la espalda tocale el culo
  #25 (permalink)  
Antiguo 11/03/2010, 18:31
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Consulta MYSQL

bien, por ahora no tengo mucho tiempo para entrar en detalles, pues me presionan para terminar un sistema así que vamos al punto.
este es una clase que tengo creado para mis conexiones, tal vez los nombres de las funciones son algo extensas, pero por falta de tiempo no me he dado a la tarea de mejorarlo, sin embargo, me sirve bastante bien, sin mas aqui se los dejo.
Código PHP:
Ver original
  1. <?php
  2. #-------------------------------------------#
  3. #realizado por:                             #
  4. #               Edgar Israel Tamayo Silva   #
  5. #email:                                     #
  6. #               [email protected]           #
  7. #-------------------------------------------#
  8. /**
  9. * clase para la conexion a la
  10. * base de datos mysql por
  11. * medio de mysqli
  12. */
  13. class Conectar{
  14.     private     $resultado;
  15.     protected   $cnx;
  16.     public      $devolverError=false;//si es true devuelve el resultado y false lo termina con die
  17.  
  18.     public function __construct($server='',$user='',$pass='',$base=''){
  19.         //si le envio los parametros
  20.         if(!empty($server) && !empty($user) && !empty($base)){
  21.             $this->cnx=@mysqli_connect($server,$user,$pass,$base);
  22.         }else{
  23.             //por si quiero usar constantes
  24.             $this->cnx=@mysqli_connect(LOCALHOST,USUARIO,PASSWORD,BASE);
  25.         }
  26.         if(!$this->cnx){
  27.             self::getError(1);//si ocurre error se llama a la funcion que nos devuelve el error
  28.         }  
  29.     }
  30.    
  31.     #funcion para escapar caracteres especiales y evitar inyección de SQL
  32.     public function setEscapar($cadena){
  33.         return @mysqli_escape_string($this->cnx,$cadena);
  34.     }
  35.  
  36.     #devuelve el error de mysql en caso de existir
  37.     public function getError($tipo=0){
  38.         $error="ERROR - ";
  39.         if($tipo != 0){
  40.             $error.=mysqli_connect_errno()." - ".mysqli_connect_error();
  41.         }
  42.         else{
  43.             $error.=mysqli_errno($this->cnx)." - ".mysqli_error($this->cnx);
  44.         }
  45.         if($this->devolverError){
  46.             return $error;//devuelve el error para que el usuario lo use donde quiera
  47.         }
  48.         else{
  49.             die($error);//detiene la aplicacion y muestra el error
  50.         }
  51.     }
  52.    
  53.     #devuelve true si no hay error y false si existe
  54.     public function getErrorDeQuery(){
  55.         return $this->resultado;//devuelve true si no hay error y false si existe
  56.     }
  57.  
  58.     #devuelve el resultado de un select dependiendo del metodo pasado por parametro
  59.     #ya sea array, row, object, field, lengths o assoc por default tiene este último.
  60.     public function getResultado($modo='assoc'){
  61.         $modo=strtolower($modo);
  62.         switch($modo){
  63.             case 'array':
  64.                             return @mysqli_fetch_array($this->resultado);
  65.                             break;
  66.             case 'field':
  67.                             return @mysqli_fetch_field($this->resultado);
  68.                             break;
  69.             case 'lengths':
  70.                             return @mysqli_fetch_lengths($this->resultado);
  71.                             break;
  72.             case 'object':
  73.                             return @mysqli_fetch_object($this->resultado);
  74.                             break;
  75.             case 'row':
  76.                             return @mysqli_fetch_row($this->resultado);
  77.                             break;
  78.             case 'assoc':
  79.             default:
  80.                             return @mysqli_fetch_assoc($this->resultado);
  81.                             break;
  82.         }
  83.  
  84.     }
  85.  
  86.     #devuelve el Número de registros que devolvió la consulta
  87.     public function getResultadoNumerico(){
  88.         return $resNum=mysqli_num_rows($this->resultado);
  89.     }
  90.  
  91.     //ejecuta una consulta, insert, update o delete
  92.     public function setQuery($sqlQuery){
  93.         $this->resultado=mysqli_query($this->cnx,$sqlQuery);
  94.     }
  95.  
  96.     //Devuelve el id afectado en un insert
  97.     public function getIdAfectado(){
  98.         return $idAfectado=mysqli_insert_id($this->cnx);
  99.     }
  100.  
  101.     //libera la memoria
  102.     public function setLiberarMemoria(){
  103.         mysqli_free_result($this->resultado);
  104.     }
  105.  
  106.     //cierra la conexion
  107.     public function setCerrarConexion(){
  108.         mysqli_close($this->cnx);
  109.     }
  110.    
  111.     #libera y cierra
  112.     public function setTerminar(){
  113.         if(!empty($this->resultado)){
  114.             self::setLiberarMemoria();
  115.         }
  116.         self::setCerrarConexion();
  117.     }
  118. }
  119. ?>
no tengo documentación así que deben de conocer un poco de poo para implementarlo.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #26 (permalink)  
Antiguo 11/03/2010, 23:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP a PHP orientado a objetos

Etiquetas: mysql
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 16:47.