Foros del Web » Programando para Internet » PHP »

Crear clase para conectar a la base de datos... mysql o mysqli?

Estas en el tema de Crear clase para conectar a la base de datos... mysql o mysqli? en el foro de PHP en Foros del Web. Hola gente, Conciso: ¿Para crear una clase para conectar a la base de datos mysql me conviene usar mysql_conect , mysql_query , etc o me ...
  #1 (permalink)  
Antiguo 11/10/2010, 20:44
 
Fecha de Ingreso: diciembre-2009
Ubicación: dirname(__FILE__)
Mensajes: 149
Antigüedad: 14 años, 4 meses
Puntos: 11
Pregunta Crear clase para conectar a la base de datos... mysql o mysqli?

Hola gente,

Conciso:
¿Para crear una clase para conectar a la base de datos mysql me conviene usar mysql_conect, mysql_query, etc o me conviene usar mysqli ?

Detalloso:

Resulta que cree una clase para usar una base de datos (en este caso mysql). No es la gran cosa, pero me es útil para hacer cosas de éste estílo:

Código PHP:
Ver original
  1. $bd = BaseDatos::instancear();
  2.  
  3. $usuarios = $bd->ek_objetos('SELECT * FROM usuarios');
  4.  
  5. echo '<ul>';
  6. foreach($usuarios as $usuario) {
  7.    echo '<li>'.$usuario->nombre.', ';
  8.    echo $usuario->edad.', ';
  9.    echo $usuario->sexo.'</li>';
  10. }
  11. echo '</ul>';

Código PHP:
Ver original
  1. // o bien
  2.  
  3. $bd = BaseDatos::instancear();
  4.  
  5. $libros = $bd->ek_arreglos('SELECT * FROM usuarios');
  6.  
  7. echo '<ul>';
  8. foreach($libros as $libro) {
  9.    echo '<li>'. $libro['titulo'] .', ';
  10.    echo $libro['autor'] .', ';
  11.    echo $libro['editorial'] .'</li>;
  12. }
  13. echo '</ul>
  14.  
  15. // o bien
  16.  
  17. $libro = $bd->ek_arreglos();
  18. echo '<ul>';
  19. foreach($libros as $libro) {
  20.   echo '<li>';
  21.   foreach( $libro as $dato ) {
  22.     echo $dato .', ';
  23.   }
  24.   echo '</li>';
  25. }
  26. echo '</ul>';


Para esto usé la api básica de php para conectar con mysql, esas sentencias tipo mysql_conect, mysql_fetch_array, etc.

El problema es que ahora estaba revisando el manual php y dice lo siguiente:

Cita:
Note:
Si se utiliza una versión de MySQL 4.1.3 o posterior, se recomienda encarecidamente utilizar la extensión mysqli en su lugar. (http://www.php.net/manual/es/mysqli.overview.php)
Entonces estoy plop!, ¿Qué tiene de bueno mysqli que no tenga la api mysql a secas? Eso de la orientación a objetos lo entiendo y es por eso que me cree una clase, por ejemplo si mañana cambio de mysql a postgreSQL sólo cambio mi clase y listo, pero si uso mysqli tendría que recorrer todo el código para cambiar cada sentencia mysqli.

¿Qué opinan? ¿Continúo tal como voy?

muchas gracias!
  #2 (permalink)  
Antiguo 11/10/2010, 20:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Crear clase para conectar a la base de datos... mysql o mysqli?

Te conviene mejor usar PDO para conectarte a una base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 11/10/2010, 20:49
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Crear clase para conectar a la base de datos... mysql o mysqli?

bueno creo que lo mas recomendable es usar PDO ya que te da mucha facilidad y las clases que crees solo deberan extender de esta yo comence como tu creando una propia y aca me dijeron lo mismo que te indico ahora fijate solo como base para que desarrolles tus clases propias
http://www.forosdelweb.com/f68/estoy...o-bien-833611/ saludos

edito se me adelantaron jaja
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #4 (permalink)  
Antiguo 11/10/2010, 21:44
 
Fecha de Ingreso: diciembre-2009
Ubicación: dirname(__FILE__)
Mensajes: 149
Antigüedad: 14 años, 4 meses
Puntos: 11
Respuesta: Crear clase para conectar a la base de datos... mysql o mysqli?

Hola abimaelrc, no tenía idea que existía algo llamado PDO, lo voy a investigar, gracias :)
(corrijo: lo leí en el enlace que yo mismo puse XD, pero como no sabía qué era lo pasé de largo).

carlos_belisario: Wow!, excelente tema, mucha mucha info para estudiar. En la clase que estaba creando usé un patrón Singleton, ahora leo que no es recomendable jejeje. A seguir aprendiendo.

Saludos.
  #5 (permalink)  
Antiguo 11/10/2010, 21:49
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Crear clase para conectar a la base de datos... mysql o mysqli?

pues si informacion hay bastante en la web y bueno yo tambien si te fijas use singleton al principio pero me indicaron el porque no se debe usar ya que estarias privando de poder crear mas instancias de bd, pero bueno creo que ya lo que te queda es investigar un poco mas y adaptar tu clase a la utilizacion de PDO espero ver como la realizas saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 11/10/2010, 22:35
 
Fecha de Ingreso: diciembre-2009
Ubicación: dirname(__FILE__)
Mensajes: 149
Antigüedad: 14 años, 4 meses
Puntos: 11
Respuesta: Crear clase para conectar a la base de datos... mysql o mysqli?

otro tema con enlaces interesantes... http://www.forosdelweb.com/f68/pdo-m...ontras-796673/

Según dice http://www.tufuncion.com/select-mysqli-pdo-php (que a su ves referencia a http://dealnews.com/developers/php-mysql.html ), usar PDO es algo más lento que mysqli... que tan cierto será?
  #7 (permalink)  
Antiguo 12/10/2010, 06:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Crear clase para conectar a la base de datos... mysql o mysqli?

PHP está compilado del lenguaje C/C++. Eso quiere decir que (en teoría) es más rápido. Lo que debes pensar más bien es que puedo hacer con PDO. Puedes conectarte a varias bases de datos sin hacer cambios drásticos y no requiere tanta programación. Por ejemplo, si crearas una función para hacer queries con PDO solo debes crear la conexión a la base de datos y fetch o fetchAll hace el resto. Si en el caso quisieras instalar mysqli y en el futuro quisieras conectarte a otra base de datos como Oracle, vas a tener que programar completamente la forma de conectarte a Oracle porque mysqli se limita a su base de datos, no es abstracta como lo es PDO.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 12/10/2010, 07:43
 
Fecha de Ingreso: diciembre-2009
Ubicación: dirname(__FILE__)
Mensajes: 149
Antigüedad: 14 años, 4 meses
Puntos: 11
Respuesta: Crear clase para conectar a la base de datos... mysql o mysqli?

cierto, hay que poner en la balanza el asunto de la escabilidad y el rendimiento.
Buen concejo.
  #9 (permalink)  
Antiguo 12/10/2010, 07:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Crear clase para conectar a la base de datos... mysql o mysqli?

Corrijo, en vez de decir al principio PHP, debería decir PDO.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: clase, mysql, mysqli
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 03:39.