Не читается кириллица - MySQL
Формулировка задачи:
Недавно начал изучать PHP. Столкнулся с проблемой, что при обращении файла к базе данных mysql не распознаётся кириллица. Например, я создал юзера с русским именем. И когда обратился к нему через PHP файл:
То в окно браузера выводится следующая ошибка:
"Warning: mysql_connect() [function.mysql-connect]:
<?php header('Content-Type: text/html; charset=utf-8'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Соединение с БД</title> </head> <body> <? $db = mysql_connect("localhost","Николай", "77"); mysql_select_db("firstbd", $db); $result = mysql_query("SELECT * FROM company", $db); $myrow = mysql_fetch_array($result); echo $myrow["name"]; ?> </body> </html>
Access denied for user 'ИЕРОГЛИФЫ'
'localhost' (using password: YES)" Когда написал логин латиницей, то эта проблема исчезла. Однако в базе данных также есть информация на кириллицей. И при обращении к ней выдаются знаки вопроса. Подскажите, как решить эту проблему.Решение задачи: «Не читается кириллица»
textual
Листинг программы
<?php namespace Database; /** * Класс для работы с БД */ class Database { /** * @var mysqli Хранит соединение с БД */ private static $resource; /** * Соединяется с БД * и сразу уставнавливает кодировку UTF-8 для соединения */ public static function connect() { $config = json_decode(file_get_contents('application/database.json')); $profile = $config->profile; self::$resource = mysqli_connect( $config->{$profile}->server, $config->{$profile}->user, $config->{$profile}->password, $config->{$profile}->database ); Query::fromString("SET NAMES utf8 COLLATE utf8_unicode_ci")->exec(); } /** * Возвращает соединение */ public static function resource() { return self::$resource; } }
Объяснение кода листинга программы
- Представленный код написан на PHP и является классом для работы с базой данных.
- Кодировка UTF-8 устанавливается для соединения с базой данных в методе
connect()
. - Метод
resource()
возвращает ресурс соединения с базой данных. - Класс
Database
содержит переменную$resource
, которая хранит соединение с базой данных. - В коде используется расширение mysqli для работы с базой данных.
- Метод
connect()
принимает параметры конфигурации из файла 'application/database.json'. - Параметры конфигурации включают в себя информацию о сервере, пользователе, пароле и базе данных.
- Метод
fromString()
используется для выполнения SQL-запроса. - SQL-запрос
SET NAMES utf8 COLLATE utf8_unicode_ci
устанавливает кодировку соединения с базой данных на UTF-8. - Код не содержит ошибок, связанных с обработкой кириллицы, так как кодировка UTF-8 поддерживает все языки, включая кириллицу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д