✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Використання sprintf і LIKE у запитах SQL у WordPress

14

Працюючи із запитами в 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аргументу, але є кілька різних способів зробити це, і це виходить за межі цієї публікації.

Коротше кажучи, додайте префікс і суфікс %sз %%, і все буде готово.

Джерело запису: tommcfarlin.com

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі