Кодировка в PHP ООП

377
02 мая 2017, 08:27

Ребята, изучаю курс PHP ООП Lynda.com Кевина Скогланда. Не понимаю как в его коде установить русскую кодировку. Точнее я конечно могу написать header на странице. Но мне нужно, чтобы я писала название фото на русском и оно на русском грузилось в БД. Все перепробовала. Как в процедурке сделать я знаю. Но здесь куда коня впрягать?

Код с БД:

class MySQLDatabase {
    private $connection;
    public $last_query;
    private $magic_quotes_active; // нет причины использовать их из вне класса
    private $real_escape_string_exists;
    // откроем соединение автоматически
    function __construct() {
        $this->open_connection();       
        $this->magic_quotes_active = get_magic_quotes_gpc(); // проверяет установлены ли волшебные кавычки. get_magic_quotes_gpc — Получение текущего значения настройки конфигурации magic_quotes_gpc 
        $this->real_escape_string_exists = function_exists("mysql_real_escape_string"); // проверка выполняется один раз при создании объекта БД и не тратит мощности на вычисление     
    }
    // открытие соединения
    public function open_connection() {
        $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);     
        if(!$this->connection) {
            die("Database connection failed: " . mysql_error());
        } else {
            $db_select = mysql_select_db(DB_NAME, $this->connection);
            if(!$db_select) {
                die("Database selection failed: " . mysql_error());
            }
        }
    }
    // закрытие соединения
    public function close_connection() {
        if(isset($this->connection)) {
            mysql_close($this->connection);
            unset($this->connection);
        }
    }
    // метод запроса к БД
    public function query($sql) {
        $this->last_query = $sql;       
        $result = mysql_query($sql, $this->connection);
        $this->confirm_query($result);
        return $result;
    }
    // подготовка значений для отправки в SQL
    public function escape_value($value) {
        if($this->real_escape_string_exists) {
            if($this->magic_quotes_active) {$value = stripslashes($value);} // stripslashes — Удаляет экранирование символов
            $value = mysql_real_escape_string($value);
        } else {
            if(!$this->magic_quotes_active) {$value = addslashes($value);} // addslashes — Экранирует строку с помощью слешей
        }
        return $value;
    }
    // возвращает массив
    public function fetch_array($result_set) {
        return mysql_fetch_array($result_set);
    }
    // количество рядов результата запроса
    public function num_rows($result_set) {
        return mysql_num_rows($result_set);
    }
    // 
    public function insert_id() {
        return mysql_insert_id($this->connection); // mysql_insert_id — Возвращает идентификатор, сгенерированный при последнем INSERT-запросе
    }
    // 
    public function affected_rows() {
        return mysql_affected_rows($this->connection); // mysql_affected_rows — Возвращает число затронутых прошлой операцией рядов
    }

    // проведка запроса
    // метод приватный, т.к будет вызываться только в данном классе
    private function confirm_query($result) {
        if(!$result) {
            $output = "Database query failed: " . mysql_error() . "<br /><br />";
            //$output .= "Last query: " . $this->last_query; // нужно только для тестирования
            die($output);
        }
    }


}
$database = new MySQLDatabase();
Answer 1

Просто надо добавить http://php.net/manual/ru/function.mysql-set-charset.php

 // открытие соединения
public function open_connection() {
    $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS);     
    if(!$this->connection) {
        die("Database connection failed: " . mysql_error());
    } else {
        $db_select = mysql_select_db(DB_NAME, $this->connection);
        mysql_set_charset("UTF-8", $this->connection);
        if(!$db_select) {
            die("Database selection failed: " . mysql_error());
        }
    }
}
READ ALSO
Чем задокументировать фреймворк?

Чем задокументировать фреймворк?

есть некий php фреймворк, без документацииНеобходимо описать функционирование, классы, методы

293
SoundCloud embedded

SoundCloud embedded

How to make it embedded? Like a player, not a link

391
Ошибка jQueryxxxxxxx_xxxxxxxxxxx was not called

Ошибка jQueryxxxxxxx_xxxxxxxxxxx was not called

Получаю эту ошибку jQueryxxxxxxx_xxxxxxxxxxx was not called

349