Верх страницы
Обложка к записи Санация конструкции «IN» в $wpdb
Время для прочтения: 0 мин. 22 сек.

Санация конструкции «IN» в $wpdb

Класс $wpdb включает в себя метод $wpdb->prepare(), который очищает и делает безопасным сам запрос, основываясь на типах данных (строка, число, число с плавающей точкой).

Но в нем нет простого способа для санирования внутри структуры IN. Попробуем это исправить.

<?php
// Получим записи.
// Вернет 'array(1, 3, 5, 8, 13, [...])'
$special_entries = get_option( 'entries' );
 
// Посчитаем количество записей
$how_many = count( $special_entries );
 
// Подготовим нужное количество плейсхолдеров.
// Если нужны строки, а не числа - используйте '%s'
$placeholders = array_fill( 0, $how_many, '%d' );
 
// Склеим плейсхолдеры в строку.
// Вернёт '%d, %d, %d, %d, %d, [...]'
$format = implode( ', ', $placeholders );
 
// Вставим плейсхолдеры в запрос
$query = "
  SELECT ID, post_title, post_name, post_parent 
  FROM $wpdb->posts 
  WHERE post_parent IN( $format )";
 
// Выполним безопасно запрос и получим данные
$results = $wpdb->get_results( $wpdb->prepare( 
  $query, $special_entries
) );

Ссылки

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Предыдущая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы