Что использовать вместо mysql_escape_string() в Drupal 7?

Начиная с версии PHP 4.3.0, функция mysql_escape_string() считается устаревшей. PHP будет выдавать соответствующее предупреждение.

Deprecated function: mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Т.е. рекомендуется использовать вместо неё — mysql_real_escape_string(). Но та в свою очередь также устарела, начиная с версии PHP 5.5.

Deprecated function: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead.

Т.е. если вы используете PHP версии 5.6 и выше, то рекомендуется использовать соответствующие функции библиотек баз данных — mysqli или PDO.

При работе с базой в Drupal обычно не приходится использовать функции подготовки аргументов, все необходимые операции уже заложены в соответствующие классы при выполнении запросов к базе.

Но если ваш запрос требует сложной подготовки, то вы наверняка конструируете его в чистом PHP. Тогда потребуется обращение к аналогам mysql_escape_string().

Решение

Drupal 7 расширяет класс PDO с помощью, по сути, интерфейса (абстрактного класса)  DatabaseConnection (/includes/database/database.inc). Методы которого реализуются в соответствующих классах-драйверах подключения к базе данных.

Но в основе лежит PDO, так что необходимо лишь получить доступ к текущему подключению и вызвать метод PDO::quote(), как аналог mysql_escape_string().

Вот пример использования:

PDO::qoute() добавляет одинарные кавычки и блокирует спец символы внутри строки.

Мало букафф? Читайте есчо !

Как использовать callback функции внутри класса

Июнь 5, 2017 г.

Пробовали ли вы использовать функции PHP, требующие указания кол-бек функции в качестве аргумента? Я часто пользуюсь preg_replace_callback(). Если функция вызывается внутри класса, то хотелось бы и callback разместить внутри этого же класса (объекта). ...

Читать

Изменения настроек поля программно Drupal 7

Май 27, 2020 г.

Если вам программно нужно изменить настройки поля в Drupal, то на помощь приходит Field CRUD API. Это набор функций из файла modules/field/field.crud.inc. ...

Читать

Вызов замыкания из другой анонимной функции.

Декабрь 14, 2020 г.

При необходимости использовать (в PHP коде) замыкание (closure) A в коде замыкания B, возникает проблема в области видимости. Т.к. внутри B о функции A ничего не известно. Пример ситуации: [crayon-6ac0c81f8fab6908271877/] Для того чтобы в ...

Читать

Работа с config split модулем в Drupal

Март 16, 2024 г.

Задача модуля - дать возможность разделить конфигурации сайта для разных системных окружений. На локальном сервере вы можете использовать такие модули ...

Читать
 

Комментарии к «Что использовать вместо mysql_escape_string() в Drupal 7?»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: