Поддержка Проблемы и решения Incorrect work stripslashes_deep() please fix in net release

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Could you please be more specific? (You can write in Russian if you want.)

    Я вижу проблему в том, что при сохранении данных в базу данных, тип данных теряется.
    Например есть массив
    { [‘administrator’] => bool(true) }
    Когда я пользовался функциями создания пользователей, я получал wp_capabilities в таком виде
    a:1:{s:13:»administrator»;b:1;}
    после апгрейда PHP на сервере до версии 5.3, запись стала другой
    a:1:{s:13:»administrator»;s:1:»1″;}
    Я выяснил, что преобразование типа получилось после обработки функции
    stripslashes_deep(), и данные стали иметь вид:
    { [‘administrator’] => string»1″ }
    Мне кажется что необходимо сохранять тип данных так как для некоторых задач это может быть важным.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Разработчики рекомендуют использовать API WordPress вместо прямых SQL-запросов, т.к. нет гарантии, что в будущих версиях не поменяется что-нибудь ещё в способах хранения информации.

    В самом WordPress тип данных (boolean или string) в этом массиве не важен. Почему он важен для вас?

    Если вы всё же считаете, что это баг, напишите в багтрекер:
    http://core.trac.wordpress.org/

    На самом деле это пример наглядный и только. Я очень часто создаю кастомные поля в профайле юзера, и очень важно сохранять типы данных.
    Что касается данного поля то пришлось прибегнуть к выполнению запроса такого рода
    …. WHERE wp_capabilities LIKE(‘%a:1:{s:13:»administrator»;b:1;}%’)
    соответственно при создании новых юзеров у которых поле стало иметь значеине a:1:{s:13:»administrator»;s:1:»1″;} запрос не отработал.
    Так как я стараюсь не модифицировать сам вордпресс, то решил запостить этот вопрос.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    http://core.trac.wordpress.org/ticket/18026

    WHERE wp_capabilities LIKE(‘%a:1:{s:13:»administrator»;b:1;}%’)

    А почему не просто WHERE wp_capabilities LIKE('%administrator%')?

    я стараюсь не модифицировать сам вордпресс

    Это хорошо 🙂

Просмотр 5 ответов — с 1 по 5 (всего 5)
  • Тема «Incorrect work stripslashes_deep() please fix in net release» закрыта для новых ответов.