Здравствуйте.
Имею проблему с отображением базы данных в нужной кодировке. перепробовал почти все. Как думаю, можно 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)