sanitize_sql_orderby()WP 2.5.1

Проверяет можно ли использовать переданную строку в ORDER BY части SQL запроса.

Принимает одну или более колонок, с или без порядка сортировки (ASC/DESC). Например: column_1, column_1, column_2, column_1 ASC, column_2 DESC. Также понимает RAND().

Хуков нет.

Возвращает

Строку|false. Вернет переданную строку или false если она не подходит.

Использование

sanitize_sql_orderby( $orderby );
$orderby(строка) (обязательный)
Строка которую нужно проверить и вернуть, если она подходит.

Примеры

1

#1 Проверка ORDER BY части SQL запроса

// пример прохождения проверки
$orderby = ' col1 ASC ';
$orderby = sanitize_sql_orderby( $orderby );
var_dump( $orderby ); // string(10) " col1 ASC "

// пример ошибки
$orderby = sanitize_sql_orderby( ' col-1 ASC ' ); // bool(false)

Список изменений

С версии 2.5.1 Введена.

Код sanitize_sql_orderby() WP 6.5.2

function sanitize_sql_orderby( $orderby ) {
	if ( preg_match( '/^\s*(([a-z0-9_]+|`[a-z0-9_]+`)(\s+(ASC|DESC))?\s*(,\s*(?=[a-z0-9_`])|$))+$/i', $orderby ) || preg_match( '/^\s*RAND\(\s*\)\s*$/i', $orderby ) ) {
		return $orderby;
	}
	return false;
}