2581 votos

¿Por qué debería ' t utilizo mysql_ * funciones en PHP?

¿Cuáles son las razones técnicas que no debería usar mysql_* funciones? (como mysql_query() , mysql_connect() o mysql_real_escape_string() ).

¿Por qué debo mover lejos de ellos mientras trabajan en mi sitio?

2154voto

Quentin Puntos 325526

La extensión de MySQL es:

  • No bajo desarrollo activo
  • Oficialmente obsoleto (a partir de PHP 5.5. Es probable que sea eliminado en la próxima versión.)
  • Carece de una interfaz OO
  • No apoyo:
    • Sin bloqueo, consultas asíncronas
    • Declaraciones preparadas o consultas con parámetros
    • Procedimientos almacenados
    • Múltiples Declaraciones
    • Transacciones
    • Toda la funcionalidad de MySQL 5.1

Ya es obsoleto, el uso que hace de su código de menos a prueba de futuro.

La falta de soporte para declaraciones preparadas es particularmente importante, ya que proporcionan una visión más clara, menos propenso a errores de método de escape y citando datos externos de forma manual para escapar de ella con una función separada de la llamada.

Ver la comparación de SQL extensiones.

308voto

Second Rikudo Puntos 59550

En primer lugar, vamos a comenzar con la norma de comentario les damos a todos:

Por favor, no use mysql_* funciones en el nuevo código. Que ya no se mantienen y son oficialmente obsoleto. Ver el cuadro rojo? Aprender acerca de las declaraciones preparadas en el lugar, y el uso de PDO o MySQLi - este artículo le ayudará a decidir cual. Si usted elige PDO, aquí hay un buen tutorial.

Vamos a ir a través de esta, frase por frase, y explicar:

  • Que ya no se mantienen, y son oficialmente obsoleto

    Esto significa que la comunidad de PHP es que poco a poco dejar el soporte para estas muy antiguas funciones. Es probable que no exista en un futuro (recientes) de la versión de PHP! El uso continuado de estas funciones puede romper su código en el (no tan) en un futuro lejano.

    ¡NUEVO! - ext/mysql es ahora oficialmente obsoleto como el de PHP 5.5!

  • En su lugar, usted debe aprender de sentencias preparadas -

    mysql_* de la extensión no tiene soporte para declaraciones preparadas, que es (entre otras cosas) una contramedida muy efectiva en contra de la Inyección de SQL. Se fija un muy grave vulnerabilidad en MySQL dependientes de las aplicaciones que permite a los atacantes acceder a la secuencia de comandos y realizar cualquier posible consulta en su base de datos.

    Para obtener más información, consulte ¿Cómo puedo prevenir la inyección de SQL en PHP?

  • Ver la Caja Roja?

    Cuando usted vaya a cualquier mysql de la función manual de la página, verá un cuadro de color rojo, explicando que no debería ser utilizada nunca más.

  • El uso de cualquiera de DOP o MySQLi

    No hay mejor, más robusto y bien construido alternativas, PDO - PHP Objeto de Base de datos, que ofrece una completa programación orientada a objetos se enfoque a la base de datos de interacción, y MySQLi, que es una base de datos MySQL específicas de mejora.

154voto

Alnitak Puntos 143355

La mysql_ funciones son:

  1. obsoleto - no eres mantuvieron más
  2. No le permiten moverse fácilmente a otra base de datos back-end
  3. no admiten comandos preparados, por lo tanto
  4. animar a los programadores utilizar concatenación para construir consultas, llevando a vulnerabilidades de inyección SQL

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X