Я пытаюсь получить данные в формате JSON. В базе данных таблица «employee» содержит данные кириллицей
<?php
$mysqli = new mysqli("localhost","user","password","db");
$myArray = array();
if ($result = $mysqli->query("SELECT * FROM employee")) {
$tempArray = array();
while($row = $result->fetch_object()) {
$tempArray = $row;
array_push($myArray, $tempArray);
}
echo json_encode($myArray);
}
$result->close();
$mysqli->close();
?>
Результат содержит NULL вместо значений в кириллице.
[
{
id: "1",
lastname: null,
firstname: null,
middle: null,
occupation: null,
dob: "1991-01-01",
mobile: "+99999 9999999",
home: "+77777 7777777",
email: "[email protected]"}
]
Вывод myArray:
а: 2: {я: 0; O: 8: «StdClass»: 9: {s: 2: «ID»; s: 1: «1»; s: 8: «Lastname»; s: 7: «Азизов «; s: 9:» Firstname «; s: 6:» Азиз «; s: 6:» средние «; s: 14:» Азизович «; s: 10:» оккупация «; s: 19:» Android
разработчик «; s: 3:» DOB «; s: 10:» 1991-01-01 «; s: 6:» мобильный «; s: 13:» + 99999999999 «; s: 4:» дом «; s: 13: «+ 777777777777»; s: 5: «электронная почта»; s: 22: «[email protected]»;}}
Как решить эту проблему?
Я только что добавил $mysqli->set_charset("utf8");
Эта строка кода кодирует данные в формате UTF-8. Почему это не работает? Потому что json_encode нужны данные в UTF-8
<?php
$mysqli = new mysqli("localhost","user","password","db");
$mysqli->set_charset("utf8");
$myArray = array();
if ($result = $mysqli->query("SELECT * FROM employee")) {
$tempArray = array();
while($row = $result->fetch_object()) {
$tempArray = $row;
array_push($myArray, $tempArray);
}
echo json_encode($myArray);
//echo serialize($myArray);
}
$result->close();
$mysqli->close();
?>
Других решений пока нет …