Foros del Web » Programando para Internet » PHP »

clases y mysqli

Estas en el tema de clases y mysqli en el foro de PHP en Foros del Web. Hola, como están? tengo la siguiente duda. Cual es la forma mas segura para conectarse a la base de datos? con una objeto de la ...
  #1 (permalink)  
Antiguo 01/12/2011, 19:54
 
Fecha de Ingreso: agosto-2011
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 7
Conexion con metodo static

Hola, como están? tengo la siguiente duda.

Cual es la forma mas segura para conectarse a la base de datos?


con una objeto de la clase :

$sql = mysql_query($sql,$Conectar->conexion())

o con un metodo estatico .

$sql = mysql_query($sql,Conectar::conexion())

Gracias.

PD : Para ahorrar escribir la clase y metodo de conexion, lo hice con mysql_query, creo que se entiende.
  #2 (permalink)  
Antiguo 01/12/2011, 22:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Conexion con metodo static

La seguridad no radica en la implementación de un método.

Es como decir que por usar tenis en lugar de zapatos eres mas inteligente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/12/2011, 12:12
 
Fecha de Ingreso: agosto-2011
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 7
clases y mysqli

Hola como están?
Bueno, estoy empezando un proyecto y queria provar con mysqli.

Anteriormente trabajaba con php poo y mysql, con clases metodos etc.

Tengo una duda en lo que respecta a mysqli.

Deberia trabajar mysqli con clases y metodos? ya que mysqli ya esta orientada a objetos.

Lo otro, cuando trabajaba anteriormente con mysql la conexion la retornaba en un metodo static. ej :

mysql_query(sql,Conectar::conexion());

es seguro ? o es mejor :

mysql_query(sql,Conectar->conexion())

y lo ultimo,

con mysqli como trabajaria la conexion ?...
Gracias.
  #4 (permalink)  
Antiguo 05/12/2011, 12:14
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: clases y mysqli

Mejor usa PDO, esa sí está orientada a objeto.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 05/12/2011, 12:18
 
Fecha de Ingreso: agosto-2011
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 7
Respuesta: clases y mysqli

Pero, en velocidad, habia leido que era mejor mysqli ?
  #6 (permalink)  
Antiguo 05/12/2011, 12: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: clases y mysqli

Pero hazte una pregunta ¿cuánto tiempo piensas que durará una consulta? Son microsegundos de velocidad y es el recomendado en uso a conexiones a la base de datos, por lo flexible. Tal vez en algún futuro quieras cambiar de mysql a otra base de datos y con PDO no vas a pasar mucho trabajo, sino algunas cosas solas vas a cambiar.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 05/12/2011, 12:33
 
Fecha de Ingreso: agosto-2011
Mensajes: 161
Antigüedad: 12 años, 8 meses
Puntos: 7
Respuesta: Conexion con metodo static

las dos formas son correctas? no hay desventajas?
  #8 (permalink)  
Antiguo 05/12/2011, 12:43
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: Conexion con metodo static

No importa lo que uses, no hay problemas de seguridad en cualesquiera de los métodos. Lo que más bien haces es cuestiones de comodidad, en una tienes que instanciar la clase y en otra solo llamas el método directamente. Lo que te recomiendo es que estudies sobre las filosofías para que aprendas que usar en qué momento, ya que otros pasaron el trabajo y crearon alguna estrategía para manejarse de forma cómoda y flexible.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 05/12/2011, 12:59
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: clases y mysqli

La gente de PHP recomienda utilizar mysqli para consultas de datos muy muy grandes. Pero si tu proyecto es pequeño, la diferencia de rendimientos entre usar PDO con mysql o utilizar mysqli es despreciable.

Yo siempre he preferido PDO.

----------------------------------------------

Con la segunda pregunta

Conectar::conexion()

Conectar->conexion()

Son lo mismo

uno de ellos hace referencia a un nombre de espacio
y el otro a un espacio de memoria.

Si me equivoco corrijanme por favor, eso es lo que creo

En resumen, es lo mismo.

Saludos
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #10 (permalink)  
Antiguo 05/12/2011, 13:17
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: clases y mysqli

Cita:
Iniciado por iovan Ver Mensaje
La gente de PHP recomienda utilizar mysqli para consultas de datos muy muy grandes. Pero si tu proyecto es pequeño, la diferencia de rendimientos entre usar PDO con mysql o utilizar mysqli es despreciable.
¿Dónde puedo obtener esa información? Claro para aprender, porque lo que he visto es que se recomienda el uso de PDO. Lo que he visto es la recomendación de usar MySQLi sobre MySQL. Lo puedes ver en http://php.net/manual/en/mysqli.over...ysqli.overview especificamente en la nota.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 05/12/2011, 15:08
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: clases y mysqli

Si dice, Bueno más o menos ahora te te cuento.

Antes de eso lo que dije antes era refiendome entre la mysql o utilizando mysqli sobre mysql.

Cita:
If you are using MySQL versions 4.1.3 or later it is strongly recommended that you use the mysqli extension instead.

Cita:
Si se utiliza una versión de MySQL 4.1.3 o posterior, se recomienda encarecidamente utilizar la extensión mysqli en su lugar.
Creo que es lo que dices sobre la nota.
==================================================

Pero si Entre mysqli y PDO, mysqli es ligeramente más rápido.

Y parece lógico si tomamos como concepto lo siguiente:

-> PHPmanual (en alguna parte) dice que PDO ofrece una capa adicional de abstracción. Y parece lógico, pues PDO puede accesar a distintos motores de bases de datos utilizando los mismo métodos.

Si esto es cierto entonces PDO crea una interfaz o una clase abstracta.


Imagina una interfaz en la que defines todos tus métodos pero no los inicias, sabes?.

Conforme tu implementes esta interfaz deberás iniciar los métodos, pero cada método lo trabajas de la forma adecuada según el driver utilizar.


Nosotros no sabemos si PDO es una interfaz( clase 100% abstracta) o si es solo una clase abstracta, Pero la gente de PHP nos dice es abstracta y sí tiene su lógica.


Entonces cuando se hace la instancia un objeto de la clase PDO trabajará según el atributo "driver" que pasemos como parámetro.

en el caso de pasar mysql:host=servername;dbname=algo

Estamos indicando que el driver a utilizar es para trabajar con mysql.

También sabemos que si se hace la instancia con el driver de mysql , sin especificar la versión, seguramente por defecto trabajará con una versión superior a MySQL4.1.3


Por esta razón nos podemos dar cuenta que PDO realiza por lo menos 1 tarea extra.

También sabemos que todas estas tareas se traducen un árbol de procesos y en cuanto más grande sea este árbol más tiempo llevara obtener una respuesta o finalizar las tareas.


Imagina la siguiente cuestión:

mysqli -> es más directo que PDO (por decirlo de una forma simple), ya que mysqli al hacer la instancia sabe por defecto que se trabajara sobre MySql y no hay más, lo que implica que no será necesario comprobar la existencia del driver además de que no es necesario implementar una interfaz o extender de una clase abstracta algo que en PDO es imprescindible. (Esto nos ahorra 1 tarea.)

========> Para comprobar que todo esto es cierto yo hice un experimento.

Lo cierto es que no te puedo pasar un link que diga esta analogía, no se si exista. Todo lo anterior lo se aplicando un poco de lógica pero la lógica no es verdadera hasta que no se comprueba con un experimento:


No se si te comenté a tí pero hace pocas semanas hice un proyecto donde me vi en la necesidad de insertar, consultar y actualizar poquito menos de 20 millones de registros guardados en MYSQL.

Como sabía que me enfrentaba a un bicho enorme investigue cual era la mejor opción para hacer los querys; entre PDO y MySQLi

Entonces hice lo siguiente:

* Una resta de microtimes colocados al inicio del script y al final, para obtener el tiempo que tarda el script en finalizar
* 1,000,000 querys con PDO y con MySQLi (SELECT),(INSERT),(UPDATE)

(SELECT)
PDO tardó menos de 2 segundos más que MySQLI
(INSERT)
PDO tardó aprox 7 segundos más que mysqli
(UPDATE)
PDO targó 22 segundos mas que mysqli.

En todos los casos PDO tardó un poco más de tiempo.

También hay que considerar que tipo y tamaño de dato juega en el query, en mi caso fue una string de 255 bits.

Como vez, para 1,000,000 querys la diferencia entre ambos sigue siendo despreciable. Pero para 1,000,000,000 la diferencia de los tiempos de respuesta serán más significativos.


Espero sirva la info :D Un saludo amigo.
Que tengas buen comienzo de semana.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #12 (permalink)  
Antiguo 05/12/2011, 17:49
Avatar de ElSiniestro  
Fecha de Ingreso: diciembre-2011
Ubicación: Ibagué
Mensajes: 115
Antigüedad: 12 años, 4 meses
Puntos: 23
Respuesta: clases y mysqli

Uff creo que con eso quedó claro algunas cosas de PDO vs. mysqli, pero creo que la respuesta a la pregunta de ccsaiKo es:

*Si deseas seguridad y velocidad lo mejor es mysqli, debido a que es más seguro en su implementación de consultas preparadas (mysqli_stmt)

*Respecto a la manera de conectarse... ambos son estáticos, debido a que ambos son objetos recursivos y le puedes agregar métodos necesarios; así que la diferencia es básicamente la diferencia es de sintaxis debido a que el objeto que se genera es el mismo
  #13 (permalink)  
Antiguo 07/12/2011, 10:13
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 7 meses
Puntos: 188
Respuesta: clases y mysqli

No no no.

Mira yo sigo utilizando PDO, me case con PDO desde hace un tiempo, llevo tiempo utilizando mysqli, pero al probar PDO dije con este me quedo.

Lo que pasa es que si tu haces una aplicación pensando en base de datos, pero no sabes cual elegir (por muy extraño que suene... factores externos...,etc.. puede pasar)

o lo que es más frecuente tu jefe solo te da el diagrama de base de datos y te pide que hagas un programa.... Es aquí cuando agradeces la existencia de PDO porque en cuestión de minutos o en la mayoría de casos en solo 3 segundos (solamente especificando el driver), puedes adaptar tu aplicación web para trabajar con cualquier motor de base de datos, es simple seguro y rápido.

Rápido , además piensa que no es muy frecuente que una aplicación web realice 1,000,000,000 querys por segundo.... y si lo hace no importa el resultado variaría por decir algo, en una millonésimas de segundo por cada centena de querys más que con mysqli. No es nada.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.

Etiquetas: clases, conexion, metodo, mysql, mysqli, sql, static
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 21:27.