Что использовать вместо 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() добавляет одинарные кавычки и блокирует спец символы внутри строки.

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

Проверка кодов ОГРН / ОГРНИП на PHP

Сентябрь 24, 2015 г.

Продолжая тему валидаторов, публикую код двух функций для проверки введенных пользователем кодов ОГРН или ОГРНИП. Проверка кода ОГРН. Код содержит 13 знаков, последний из них используется для проверки "контрольной суммы". [crayon-6aefaa43e6f18976731554/] ...

Читать

Еще один пример работы с EntityFieldQuery

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

Время от времени продолжаю кодить под drupal 7, публикую еще один пример для работы EntityFieldQuery, на этот раз с фильтром по полю типа term reference. Основная логика точно такая же как и при работе с data полями (где у нас хранятся тексты или ...

Читать

Если не работают ЧПУ для drupal под nginx...

Июль 16, 2014 г.

Арендовал у netangels "облачный VDS" и решил попробовать их образ Debian Wheezy Nginx + PHP (php-fpm). С Nginx дела до тех пор не имел, потому с некоторыми настройками пришлось разбираться с чистого листа. На самом деле, единственный вопрос, с ...

Читать

Функционал Sites.php в Drupal 6

Июль 6, 2016 г.

Для организации мультисайтинга в Drupal 7 можно использовать специальный файл sites.php, содержащий массив перенаправлений. Этот массив задаёт соответствия между запрашиваемыми доменными именами (и др. параметрами http запроса) и конечными папками, содержащими ...

Читать
 

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

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



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