En realidad, es una forma de marcar un elemento de cadena como "inseguro" y se llama declaraciones preparadas . Una declaración preparada es una pieza de código SQL que está codificada en el código fuente de la aplicación, es decir, una "cadena segura", pero con algunos marcadores de posición para los parámetros: cada marcador de posición realmente significa: "cuando se trata de ejecutar esta declaración SQL, use la cadena del argumento, pero tenga cuidado de que el argumento sea "inseguro", es decir, puede contener cualquier cosa de una manera potencialmente hostil ".
Ese es exactamente el mecanismo que está buscando: una forma de marcar partes de una declaración SQL como "insegura" y, por lo tanto, garantiza un "resafing" automático adicional.
Algunas personas usan métodos manuales y no automáticos para "hacer que las cadenas sean seguras", con funciones como mysql_really_really_espace_string_this_time_I_said_please()
. Estos métodos manuales son profundamente insatisfactorios, ineficientes y ocasionalmente fallan porque se basan en algún método proporcionado por PHP para estar al tanto de todos los detalles de la sintaxis de las declaraciones aceptadas por MySQL, un paquete de software distinto . potencialmente actualizado por separado, y escrito por desarrolladores distintos que no necesariamente se sincronizan con los desarrolladores de PHP. Con declaraciones preparadas, el "escape" (o mecanismo equivalente) ocurre en lo profundo de MySQL, y podemos asumir que MySQL, al menos, está de acuerdo consigo mismo, evitando estos problemas.