Utilisation de sprintf et LIKE dans les requêtes SQL dans WordPress
Lorsque vous travaillez avec des requêtes dans WordPress, il est toujours préférable de préparer la requête avant de l’exécuter ; Cependant, s’il vous arrive d’interagir avec une API tierce ou de travailler avec une autre variante de SQL (comme Transact-SQL), les choses peuvent fonctionner un peu différemment.
Si seulement les bases de données étaient vraiment aussi soignées.
Le TL; DR de tout cela est que la gestion de sprintf et LIKE dans T-SQL nécessite une gestion stratégique. Et l’exemple de code dans la section suivante devrait fournir tout ce dont vous avez besoin.
sprintf et LIKE en SQL
Quelques informations sur le problème en cours :
Supposons que vous travaillez sur un projet dans lequel vous effectuez des appels à une API tierce et que ladite API utilise T-SQL pour s’interfacer avec sa base de données.
De plus, supposons que vous souhaitiez récupérer des enregistrements contenant un segment de la chaîne à interroger (vous savez, une clause LIKE ). La mise en garde est que vous ne pouvez pas utiliser la fonction de préparation standard fournie par WordPress, vous choisissez donc d’utiliser sprintf pour aider à nettoyer les informations entrantes.
Étant donné que sprintf utilise %sdes chaînes et que vous utilisez une clause LIKE qui nécessite également %, comment gérer le cas d’utilisation des deux ?
Voici un exemple de la façon dont cela peut fonctionner pour vous :
<?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.
}
Bien sûr, je pense toujours utiliser un certain type d’évasion sur l’ $nameargument, mais il existe un certain nombre de façons différentes de le faire et c’est au-delà du but de ce post.
En bref, préfixez et suffixez le %savec %%et vous devriez être prêt à partir.