Кодировка с MySQL

183
16 декабря 2019, 03:40

Проблема из разряда "Парился 5 часов и не нашел решение"

Из MySQL когда достаю данные - русские символы заменяются ?????????

Подскажите пожалуйста, так как в кодировках как раз мало разбираюсь, вроде везде где только можно проставлен единый utf8 , но увы

 <?php
//формируем заголовки документа - указываем, что кодировка UTF8
header('Content-Type: text/html; charset=UTF-8');
if (empty($_POST['commmand'])) exit;
require_once dirname(__FILE__) . '/db.php';
$data = array();
switch ($_POST['commmand']) {
case 'load-brunch':
    $pid = empty($_POST['parentID'])? 0 : $_POST['parentID'];
    $res = db_query("SELECT * FROM tree WHERE pID = :pid", array(':pid' => $pid));
    if ($res->num_rows) 
        while ($r = $res->fetch_object()) 
            $data[] = $r;
    break;
case 'load-object':
    $id = empty($_POST['objectID'])? 0 : $_POST['objectID'];
    $res = db_query("SELECT * FROM items WHERE IDobj = :id", array(':id' => $id));
    if ($res->num_rows) 
        $data = $res->fetch_object();
}
echo json_encode($data, true);

а вот db.php

<?php
global $db;
// Подключаемся к базе MySQL и выбираем базу 
$db = new mysqli('localhost', 'ulogin_default', 'PASS', 'ulogin_baza');
if ($db->connect_errno) db_error();
function db_query($sql, $pairs = array()) {
    global $db;
    if (!empty($pairs)) {
        foreach ($pairs as $key => $value) {
            if (is_numeric($value)) {
                $sql = str_replace($key, $value, $sql);
            } else {
                $sql = str_replace($key, "'" . $db->real_escape_string($value) . "'", $sql);
            }
        }
    }
    if (!$result = $db->query($sql)) 
        db_error();
    return $result;
}
function db_error() {
    global $db; 
    echo "<pre>
        Извините, возникла проблема с подключение м к бд на сайте!\n";
    echo "Ошибка: Не удалсь создать соединение с базой MySQL и вот почему: \n";
    echo "Номер_ошибки: " . $db->connect_errno . "\n";
    echo "Ошибка: " . $db->connect_error . "\n</pre>";
    exit;       
}
?>
Answer 1

Попробуйте добавить после коннекта $db = new mysqli...

$db->set_charset("utf8");
READ ALSO
Как перекрасить иконку svg?

Как перекрасить иконку svg?

Я вставил иконку svg на сайт так <img src="images/clock-blogsvg" class="clock" width="25px" height="25px" alt=""> При наведении надо, чтобы у неё перекрасилась обводка в белый...

177
Div не выравнивается float:left

Div не выравнивается float:left

Всем приветУ меня первый сайт и я столкнулся со следующей проблемой: div "item" должен выравниваться float:left, но если я это указываю, пропадает фон...

159
Как получать кадры из компонента &lt;video&gt;&lt;/video&gt;?

Как получать кадры из компонента <video></video>?

Скажите, пожалуйста, как мне получать кадры с видео, используя тег <video></video>, чтобы их можно было обработать и вывести на канвас?

147