Wordpress SQL запросов и символов - PullRequest
0 голосов
/ 24 января 2020

Мне нужно внести некоторые изменения в базы данных 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 :: Для большей ясности символ © возвращается в качестве символа замены со знаком вопроса.

1 Ответ

0 голосов
/ 24 января 2020

Я решил эту проблему, передав результаты запроса в utf8_encode:

$result = $mysqli->query($query)->fetch_object();
print_r(utf8_encode($result->option_value));

Теперь символ © отображается правильно, когда в выходных данных функция unserialize() работает, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...