Должен ли я установить заголовок Content-Type дважды в PHP?

У меня есть php скрипт, который вставляет данные в MySQL, который должен быть сделан с помощью UTF-8.
Если действие было успешно выполнено, я хотел бы повторить «успех» с помощью JSON, поэтому мне нужно дважды установить заголовок типа контента или я ошибаюсь?

Пример кода:

<?php
header('Content-Type: text/html; charset=utf-8'); // header one
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Dennis', 'Enström', 'dennis@example.com')";
if (mysqli_query($conn, $sql)) {
header('Content-Type: application/json'); // header two
echo json_encode('success');
}

Это правильный способ сделать это или как я должен это сделать?

Обновление

Значения MySQL поступают из $_POST, и HTML-документ имеет набор UTF-8.

1 ответ

  1. Используйте mysqli_set_charset()(PHP manual page), чтобы установить кодировку, используемую клиентским интерфейсом Mysql.

    Использование header()отправляет заголовок в браузер клиента, говорящий, как прочитать строку «success» в кодировке JSON.

    На этом этапе может быть полезно проверить кодировку, выбранную в базе данных.

    Обратите внимание, что ваш код в настоящее время отсутствует команда для открытия соединения mysqli перед запуском запроса.