Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO clase conexion y mysql(i)

Estas en el tema de clase conexion y mysql(i) en el foro de PHP en Foros del Web. Hola amigos vengo por haca a hacerles una consulta ya que estoy trabajando con dos script php uno viejo y uno nuevo tengo este Viejo: ...
  #1 (permalink)  
Antiguo 16/02/2014, 23:21
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Pregunta clase conexion y mysql(i)

Hola amigos vengo por haca a hacerles una consulta ya que estoy trabajando con dos script php uno viejo y uno nuevo

tengo este Viejo:
Código PHP:
Ver original
  1. $this->conexion = mysqli_connect($servidor,$usuario,$clave);
  2. mysql_select_db($basededatos, $this->conexion);

ahora tengo este:
Código PHP:
Ver original
  1. $dblink = mysqli_connect($dbhost, $dbusername, $dbuserpass);
  2. $selected = mysqli_select_db($dblink,$db1);
  3. if (!$selected) { error($dblink); }
  4. $dblink->query("SET NAMES 'utf8'");
  5. return $dblink;

mi idea es hacer algo como esto pero no lo estoy corriendo y quería saber si esta bien la sintaxis.

Código PHP:
Ver original
  1. $this->conexion = mysqli_connect($servidor,$usuario,$clave);
  2. $selected = mysqli_select_db($basedatos, $this->conexion);
  3.        
  4. if (!$selected) { error($this->conexion); }
  5. $this->conexion->query("SET NAMES 'utf8'");
  6. return $this->conexion;

estaría fusionando la estructura vieja con lo nuevo de mysqli, ya que mysql sera obsoleto próximamente. cual seria la mejor practica para ustedes?
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #2 (permalink)  
Antiguo 16/02/2014, 23:35
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: clase conexion y mysql(i)

estaba pensando el algun posible problema ya que en mysqli normalmente primero se pone la coneccion a la base de datos y luego el argumento... y en mysql es lo contrario...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #3 (permalink)  
Antiguo 17/02/2014, 00:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: clase conexion y mysql(i)

Con el constructor mysqli_connect, puedes agregar el nombre de la DB con la trabajarás como cuarto argumento (algo que no podía hacerse con mysql_connect), evitando así la necesidad de utilizar la función mysqli_select_db, la cual solamente debe ser usada cuando deseemos cambiar a la BD que por defecto indicamos en el constructor de la conexión.

El mensaje de error de conexión debe ser dado así:

Código PHP:
Ver original
  1. $this->conexion = mysqli_connect($servidor, $usuario, $clave, $basedatos);
  2.  
  3. if (!$this->conexion)
  4.     exit ("No se pudo realizar la conexión: " . mysqli_connect_error());

Con la función exit, imprimimos un mensaje (el que predeterminemos) y finalizamos la ejecución del script, evitando así la ejecución las demás instrucciones. Con la función mysqli_connect_error, imprimimos la descripción del error.

Como no realizaste la conexión en el estilo orientado a objetos, lo siguiente es incorrecto:

Código PHP:
Ver original
  1. $this->conexion->query("SET NAMES 'utf8'");

Del modo en el que realizas la construcción de la conexión (por procedimientos), debes hacerlo así:

Código PHP:
Ver original
  1. mysqli_query($this->conexion, "SET NAMES 'utf8'");

O si deseas, hazlo todo en el estilo orientado a objetos, como lo hago yo:

Código PHP:
Ver original
  1. $this->conexion = new mysqli($servidor, $usuario, $clave, $basedatos);
  2.  
  3. if ($this->conexion->connect_error)
  4.     exit ("No se pudo realizar la conexión: " . $this->conexion->connect_error);
  5.  
  6. $this->conexion->query("SET NAMES 'utf8'");
  7.  
  8. return $this->conexion;

Al realizar la conexión en el estilo orientado a objetos, la variable $this->conexion, hereda todas las propiedades de la conexión, pudiendo utilizar directamente cada una de ellas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 17/02/2014 a las 00:13
  #4 (permalink)  
Antiguo 17/02/2014, 00:19
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: clase conexion y mysql(i)

muchas gracia por las correcciones
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #5 (permalink)  
Antiguo 20/02/2014, 19:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: clase conexion y mysql(i)

De nada amigo, para eso estamos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 20/02/2014, 23:11
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: clase conexion y mysql(i)

ahora tengo una duda:

$BDLINK=$this->conexion;


puede convertirse en una variable la coneccion para evitar el uso excesivo...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #7 (permalink)  
Antiguo 21/02/2014, 01:03
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: clase conexion y mysql(i)

Puedes asignar $this->conexion a la variable que desees, de cualquier forma, cada vez que desees realizar una operación en la BD, vas a tener que utilizar la variable a la cual le asignaste el objeto de conexión.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: clase, conexion, mysql, select
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 23:55.