✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Usando sprintf e LIKE em consultas SQL no WordPress

17

Ao trabalhar com consultas no WordPress, é sempre melhor preparar a consulta antes de executá-la; no entanto, se você estiver fazendo interface com uma API de terceiros ou trabalhando com outra variante do SQL (como Transact-SQL), as coisas podem funcionar de maneira um pouco diferente.

Se apenas os bancos de dados fossem realmente tão legais.

O TL;DR de tudo isso é que lidar com sprintf e LIKE em T-SQL precisa de algum tratamento estratégico. E o exemplo de código na próxima seção deve fornecer tudo o que você precisa.

sprintf e LIKE no SQL

Alguns antecedentes sobre o problema em questão:

Digamos que você esteja trabalhando em um projeto no qual está fazendo chamadas para uma API de terceiros e a referida API usa T-SQL para fazer interface com seu banco de dados.

Além disso, digamos que você queira recuperar registros que tenham um segmento da string a ser consultada (você sabe, uma cláusula LIKE ). A ressalva é que você não pode usar a função de preparação padrão fornecida pelo WordPress, então opte por usar sprintf para ajudar a limpar as informações recebidas.

Como o sprintf usa %sstrings e você está usando uma cláusula LIKE% que também requer, como lidar com o caso de usar ambos?

Aqui está um exemplo de como isso pode funcionar para você:

<?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.
}

Claro, eu ainda acho que usar algum tipo de escape no $nameargumento, mas existem várias maneiras diferentes de fazer isso e está além do objetivo deste post.

Em suma, prefixe e sufixo o %scom %%e você deve estar pronto para ir.

Fonte de gravação: tommcfarlin.com

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação