SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.03.2011 18:18:05

albee
Участник
Зарегистрирован: 05.01.2010
Сообщений: 9

Редактирование класса php для отображение базы в нужной кодировке

Здравствуйте.
Имею проблему с отображением базы данных в нужной кодировке. перепробовал почти все. Как думаю, можно php скрипту указать, в какой кодировке обрабатывать данные. Стандартные советы типа mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error()); мне не подходят, так как соеденение и выбор данных происходит с помощью класса php

вот он

<?php
class sqlHelper
{
    var $_link;
    var $_connectionString;
    var $host;
    var $user;
    var $password;
    var $dbname;

    function __construct($connectionString) {
        $this->_connectionString = $connectionString;
    }

    function setConnectParams( $host,$user,$password,$dbname ) {
        $this->host = $host;
        $this->user = $user;
        $this->password = $password;
        $this->dbname = $dbname;
    }

    function __destruct() {
        if (!empty($this->_link)) {
            mysql_close($this->_link);
        }
    }


    function escape_string($s) {
        $this->ensureConnection();
        return mysql_real_escape_string($s, $this->_link);
    }

    // вывод ошибки БД на экран
    // можно раскоментировать код и выводить сообщение только в базу для последующей.
    // обработки администратором
    function send_error_and_die($s) {
        $this->ensureConnection();
        $text =  strip_tags( $s );
        if (!get_magic_quotes_gpc())
            $text = addslashes($text);
        //$sql = 'INSERT INTO sqlerrorlog (message, date) values ('.$s.', now() )';
        //mysql_query($sql, $this->_link);
        die($s);
          //die('<font color="red">Извините, что-то не сработало);
    }
   
    function query($sql) {
        $this->ensureConnection();
          $result = mysql_query($sql, $this->_link);
          if (FALSE === $result)
          $this->send_error_and_die ("Query failed:".$sql.' with error '.mysql_error());
          return $result;
    }

   
    function nonQuery($sql) {
        $this->ensureConnection();
          if (FALSE === mysql_query($sql, $this->_link))
            $this->send_error_and_die ("Query failed:".$sql.' with error '.mysql_error());
        else
              return mysql_affected_rows($this->_link);
    }


    function ensureConnection() {
        if (empty($this->_link)) {
            if( !empty( $this->_connectionString)  )
            {
                $parts = parse_url($this->_connectionString);
                $this->host = $parts['host'];
                $this->user = $parts['user'];
                $this->password = $parts['pass'];
                $this->dbname = substr($parts['path'],1);
            }
            $this->_link = mysql_connect($this->host, $this->user, $this->password);
            if (FALSE !== $this->_link) {
                if (FALSE === mysql_select_db($this->dbname, $this->_link)) {
                    // TODO: обработка ошибки
                }
            } else {
                // TODO: обработка ошибки подключения к базе
                $this->_link = NULL;
            }
        }
    }
}


файл соеденения с базой

include('sqlHelper.class.php');

//$db = new sqlHelper(CONNECTION_STRING);
$db = new sqlHelper('');


Подскажите пожалуйста, где правильно указать кодировку?

Отредактированно albee (09.03.2011 18:19:39)

Неактивен

 

#2 09.03.2011 23:54:13

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Редактирование класса php для отображение базы в нужной кодировке

Почему же не подходят?

Вот после этой строки и вставляйте:
$this->_link = mysql_connect($this->host, $this->user, $this->password);

Неактивен

 

#3 10.03.2011 00:18:14

albee
Участник
Зарегистрирован: 05.01.2010
Сообщений: 9

Re: Редактирование класса php для отображение базы в нужной кодировке

Спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson