✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Usando sprintf y LIKE en consultas SQL en WordPress

31

Cuando se trabaja con consultas en WordPress, siempre es mejor preparar la consulta antes de ejecutarla; sin embargo, si está interactuando con una API de terceros o trabajando con otra variante de SQL (como Transact-SQL), entonces las cosas pueden funcionar de manera un poco diferente.

Ojalá las bases de datos fueran realmente así de ordenadas.

El TL; DR de todo esto es que el manejo de sprintf y LIKE en T-SQL necesita un manejo estratégico. Y el ejemplo de código en la siguiente sección debería proporcionarle todo lo que necesita.

sprintf y LIKE en SQL

Algunos antecedentes sobre el problema en cuestión:

Digamos que está trabajando en un proyecto en el que está realizando llamadas a una API de terceros y dicha API usa T-SQL para interactuar con su base de datos.

Además, supongamos que desea recuperar registros que tienen un segmento de la cadena que se va a consultar (ya sabe, una cláusula LIKE ). La advertencia es que no puede usar la función de preparación estándar proporcionada por WordPress, por lo que opta por usar sprintf para ayudar a desinfectar la información entrante.

Dado que sprintf usa %spara cadenas y que está usando una cláusula LIKE que también requiere %, ¿cómo se maneja el caso de usar ambos?

Aquí hay un ejemplo de cómo puede funcionar para usted:

<?php
/**
 * Queries a third-party API using sprintf and a LIKE clause to retrieve the users 
 * with a last name like the specified argument.
 * 
 * @param string $lastName An unsanitized version of the user's last name.
 */
public function getUserByLastName(string $lastName)
{
    // Sanitize the argument as you see fit here.

    $query = sprintf("
        SELECT FIRST_NAME, LAST_NAME
        FROM USERINFO
        WHERE LAST_NAME LIKE '%%%s%%'
    ", $lastName);

    // Make a query to the third-party API here.
}

Por supuesto, sigo pensando en usar algún tipo de escape en el $nameargumento, pero hay varias formas diferentes de hacerlo y está más allá del objetivo de esta publicación.

En resumen, agregue el prefijo y el sufijo %scon %%y debería estar listo para comenzar.

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More