Мне нужно внести некоторые изменения в базы данных Wordpress вне Wordpress и обновить сохраненные сериализованные параметры. У меня были проблемы с получением правильной десериализации данных, проблема была в символе. В сериализованных данных хранилось '©'.
За пределами WordPress я выполнил запрос примерно так:
$query = 'SELECT * FROM wp_options WHERE option_name="theme_options"';
$result = $mysqli->query($query)->fetch_object();
print_r($result->option_value);
Рендеринг для © получился глупым, как будто это не так распознан. Из-за этого запуск unserialize()
в строке не работал. Но если я вместо этого запускаю его в Wordpress следующим образом:
$query = 'SELECT * FROM wp_options WHERE option_name="theme_options"';
$result = $wpdb->get_row($query);
print_r($result->option_value);
Это отрисовывает © правильно. Как в Wordpress, так и вне его используют php и mysqli, в чем разница?
EDIT :: Для большей ясности символ © возвращается в качестве символа замены со знаком вопроса.