Saltar al contenido

Error extraño y molesto: llamada a la función indefinida mysql_query ()

Solución:

PHP 7 se ha deshecho de mysql_query() ¡porque es problemático en una variedad de formas! La API no fomenta las buenas prácticas, la línea oficial es que no se mantiene y NO HAY DECLARACIONES PREPARADAS!?! Básicamente, es el mayor problema en PHP que fomenta las malas prácticas que conducen a la inyección de sql, y esa es una gran mala situación.

Sin embargo, trabajo con bases de código heredadas, por lo que tengo que lidiar con la misma situación que tú en algunos casos. Si tiene una base de código pequeña, simplemente actualice su método de conexión db. Si tiene una base de código grande, esto es lo que recomiendo:

  • Revierte tu versión de php para este código base a php 5.6, será compatible durante un poco más de 2016.
  • Tómese su tiempo para actualizar a PDO (puede crear un contenedor alrededor de PDO para hacerlo menos detallado y aún permitir consultas preparadas).
  • Ignore mysqli. Si tarda 5 minutos en actualizar desde mysql_ *, probablemente lo esté haciendo mal y esté abierto a sql-injection. Simplemente elija PDO y comience a usar consultas preparadas para que pueda dormir por la noche.
  • Si aún desea usar php 7 en proyectos más modernos, cree una instancia de contenedor con las bases de código heredadas de php 5.6 más antiguas.

La respuesta es simple y esta información ha estado disponible mucho antes del lanzamiento de PHP 7. Se ha eliminado y sugieren pasar a mysqli o PDO. Para obtener una lista completa de los cambios que necesita conocer para la migración, consulte esta guía.


Sus opciones:

  • Ajusta tu código a mysqli, que es lo mismo pero un poco diferente. Esto no tomará mucho tiempo para ajustar su código a.
  • Cambie a PDO, bastante diferente pero más flexible y tiene mi preferencia.
  • los mysql_* han sido eliminados, lo que significa que están abiertos a ser redefinidos. En su lugar, puede crear funciones contenedoras que se refieran a MySqli o PDO.
  • Vuelva a la versión 6 de PHP.

¿Por qué se ha eliminado?

  • No está en desarrollo.
  • los mysql_* Las funciones proporcionan solo una parte de la funcionalidad de lo que MySQL realmente tiene para ofrecer. (piense en transacciones, extractos preparados, consultas asincrónicas, etc.)
  • La gente todavía está escribiendoincluso hoy) código inseguro con esas funciones.

No estoy diciendo que el uso de MySqli o PDO evite mágicamente las inyecciones de MySQL, pero al menos proporcionan nativo apoyo contra ese tipo de ataques. El resto depende de usted; el programador, para asegurarse de apuntar los datos a donde deben ir.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *