[Hack] Crear una consulta SEGURA con parámetros y marcadones posición.

AsyncMysqlConnection::queryf


Ejecutar una consulta con marcadores de posición y parámetros, utilizamos queryf en lugar de query, ya que esta es segura y escapa a caracteres no autorizados.

Descripción

Este es probablemente el más común de los dos métodos de consulta, dada su flexibilidad y escape automático en la mayoría de los casos de cadena.

Ejemplo:

Los soportados marcadores de posición son:

    • %T El nombre de la tabla.
    • %C El nombre de la columna.
    • %s Cadena anulable (se escapará).
    • %d Entero.
    • %f Flotante.
    • %=s Comparación cadena anulable – se expande a: = ‘escaped_string’ IS NULL.
    • %=d Comparación entero anulable.
    • %=f Comparación flotante anulable.
    • %Q Consulta SQL sin formato. El typechecker intencionalmente no reconoce esto, sin embargo, puede usarlo en combinación con // UNSAFE si es absolutamente necesario. Utiliza esto a tu propio riesgo, ya que podría abrirse para la inyección de SQL.
    • %Lx Donde x es uno de T, C, s, d, o f representa una lista de nombres de tablas, nombres de columnas, cadenas anulables, números enteros o flotantes, respectivamente. Pasa un Vector de valores para que se expanda en una lista separada por comas. Los paréntesis no se agregan automáticamente alrededor del marcador de posición en la cadena de consulta, así que asegúrate de agregarlos si es necesario.

 

Con la excepción de %Q, cualquier cadena proporcionada se escapará correctamente.

Parámetros

    • HH\FormatString<HH\SQLFormatter> $query
    • …$args

Variables devueltas

Awaitable<AsyncMysqlQueryResult> – Un Awaitable representando el resultado de su consulta. Use await o join para obtener el objeto AsyncMysqlQueryResult.


Ejemplos

En el ejemplo siguiente se muestra cómo utilizar AsyncMysqlConnection :: queryf. Primero obtiene una conexión desde un AsyncMysqlConnectionPool; Entonces decidirás qué parámetros deseas pasar como marcadores de posición de consulta.

Salida


El siguiente ejemplo utiliza el marcador de posición %=s para permitirle comprobar si existe una dirección de correo electrónico con la cadena proporcionada en la tabla o, si se pasa null, si hay un usuario con una dirección de correo electrónico nula.

Salida


En el ejemplo siguiente se muestra cómo utilizar el marcador de posición %L para AsyncMysqlConnection :: queryf. Primero obtienes una conexión desde un AsyncMysqlConnectionPool; Entonces estamos pasando un vector de ids para utilizar en el marcador de posición. El marcador de posición termina siendo %Ld ya que los ids son enteros.

Salida

Leave a Reply