✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Использование sprintf и LIKE в SQL-запросах в WordPress

33

При работе с запросами в WordPress всегда лучше подготовить запрос перед его выполнением; однако, если вы взаимодействуете со сторонним API или работаете с другим вариантом SQL (например, Transact-SQL), все может работать немного по-другому.

Если бы только базы данных были такими аккуратными.

TL ;DR всего этого заключается в том, что обработка sprintf и LIKE в T-SQL требует некоторой стратегической обработки. И пример кода в следующем разделе должен предоставить все, что вам нужно.

sprintf и LIKE в SQL

Некоторая предыстория проблемы:

Допустим, вы работаете над проектом, в котором вы делаете вызовы к стороннему API, и указанный API использует T-SQL для взаимодействия со своей базой данных.

Кроме того, предположим, что вы хотите получить записи, содержащие сегмент запрашиваемой строки (вы знаете, предложение LIKE ). Предупреждение заключается в том, что вы не можете использовать стандартную функцию подготовки, предоставляемую WordPress, поэтому вы предпочитаете использовать sprintf для очистки входящей информации.

Поскольку sprintf использует %sдля строк и поскольку вы используете предложение LIKE, которое также требует %, как поступить в случае использования обоих?

Вот пример того, как это может работать для вас:

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

Конечно, я все еще думаю об использовании какого-то типа побега в $nameаргументе, но есть несколько разных способов сделать это, и это выходит за рамки этого поста.

Короче говоря, добавьте префикс и суффикс %swith %%, и все будет готово.

Источник записи: tommcfarlin.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее