[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Опять проблемы с кодировкой
Гость_Дмитрий
Просмотрел все темы по проблеме кодировок, но к сожалению свою проблему так решить и не удалось.
Не могу понять куда всавлять код, который приводят в других темах.
Собственно по моей проблеме:
При выводе списка из mysql (всё происходит с помощью PHP PDO) кириллица заменяется знаками "?????".
В PhpMyAdmin поменял кодировку на cp1251_general_ci (вкладка Сравнение).
На главной странице кириллица отображается нормально, только строки из mysql криво.


Подскажите как исправить мой пример

Ниже листинг php файла который работает с mysql


<?php
class DatabaseHandler

{

private static $_mHandler;
private function _construct()
{
}

private static function GetHandler()
{
if (!isset(self::$_mHandler))
{
try
{
self::$_mHandler =
new PDO('mysql:host=localhost;dbname=tshirtshop', 'tshirtshopadmin', 'tshirtshopadmin',
array(PDO::ATTR_PERSISTENT => 'true'));
self::$_mHandler->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
self::Close();
trigger_error($e->getMessage(), E_USER_ERROR);
}
}

return self::$_mHandler;
}


public static function Close()
{
self::$_mHandler = null;
}
public static function Execute($sqlQuery, $params = null)
{
try
{
$database_handler = self::GetHandler();
$statement_handler = $database_handler->prepare($sqlQuery);
$statement_handler->execute($params);
}
catch(PDOException $e)
{
self::Close();
trigger_error($e->getMessage(), E_USER_ERROR);
}
}

public static function GetAll($sqlQuery, $params = null, $fetchStyle = PDO::FETCH_ASSOC)
{
$result = null;
try
{
$database_handler = self::GetHandler();
$statement_handler = $database_handler->prepare($sqlQuery);
$statement_handler->execute($params);
$result = $statement_handler->fetchAll($fetchStyle);
}
catch(PDOException $e)
{
self::Close();
trigger_error($e->getMessage(), E_USER_ERROR);
}
return $result;
}

public static function GetRow($sqlQuery, $params = null, $fetchStyle = PDO::FETCH_ASSOC)
{
$result = null;
try
{
$database_handler = self::GetHandler();
$statement_handler = $database_handler->prepare($sqlQuery);
$statement_handler->execute($params);
$result = $statement_handler->fetch($fetchStyle);
}
catch(PDOException $e)
{
self::Close();
trigger_error($e->getMessage(), E_USER_ERROR);
}
return $result;
}
public static function GetOne($sqlQuery, $params = null)
{
$result = null;
try
{
$database_handler = self::GetHandler();
$statement_handler = $database_handler->prepare($sqlQuery);
$statement_handler->execute($params);
$result = $statement_handler->fetch(PDO::FETCH_NUM);
$result = $result[0];
}
catch(PDOException $e)
{
self::Close();
trigger_error($e->getMessage(), E_USER_ERROR);
}
return $result;
}

}

?>




Спустя 5 минут, 56 секунд (22.12.2010 - 11:32) divine266 написал(а):
при соединении с базой
mysql_set_charset("utf8", $db);

в данном случае ютф поставь какую надо

Спустя 3 минуты, 9 секунд (22.12.2010 - 11:36) divine266 написал(а):
у тебя кирилица я так понял, в твоем случае будет
mysql_set_charset("cp1251", $db);


Спустя 22 минуты, 6 секунд (22.12.2010 - 11:58) Гость_Дмитрий написал(а):
Подскажите в какую часть кода из приведенного листинга вставить эту функцию

Спустя 1 час, 14 минут, 41 секунда (22.12.2010 - 13:12) ИНСИ написал(а):
Гость_Дмитрий выложи класс: new PDO. Нужен файл который делает запросы в БД

Спустя 51 минута, 41 секунда (22.12.2010 - 14:04) Гость_Дмитрий написал(а):
Ниже выкладываю листинг файла config.php (жирным шрифтом выделил строки (методы PDO), которые обеспечивают выполнение запросов к БД)



<?php
define('SITE_ROOT', dirname(dirname(_FILE_)));


define('BUSINESS_DIR', SITE_ROOT . '/business/');

define('SMARTY_DIR', SITE_ROOT . '/libs/smarty/');
define('TEMPLATE_DIR', PRESENTATION_DIR . 'templates');
define('COMPALE_DIR', PRESENTATION_DIR . 'templates_c');
define('CONFIG_DIR', SITE_ROOT . '/include/configs');

define('IS_WARNING_FATAL', true);
define('DEBUGGING', false);

define('ERROR_TYPES', E_ALL);

define('SEND_ERROR_MAIL', false);
define('ADMIN_ERROR_MAIL', 'jarskii2009@gmail.com');
define('SENDMAIL_FROM', 'Errors@examples.com');
ini_set('sendmail_from', SENDMAIL_FROM);

define('LOG_ERROR', false);
define('LOG_ERROR_FILE', 'c:\\tshirtshop\\errors_log.txt');

define('SITE_GENERIC_ERROR_MESSAGE', '<h1>TShirtShop Error!</h1>');

[
b]define('DB_PERSISTENCY', 'true');
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'tshirtshopadmin');
define('DB_PASSWORD', 'tshirtshopadmin');
define('DB_DATABASE', 'tshirtshop');
define('PDO_DSN', 'mysql:host=' . DB_SERVER . ';dbname=' . DB_DATABASE);[/b]

define('VIRTUAL_LOCATION', '/tshirtshop/');
?>




запросы выполняет файл catalog.php


<?php
class Catalog

{
public static function GetDepartments()
{
$sql = 'CALL catalog_get_departments_list()';
return DatabaseHandler::GetAll($sql);
}
}

?>

Спустя 1 минута, 29 секунд (22.12.2010 - 14:06) Гость_Дмитрий написал(а):
Прошу прощения, жирным не далось сделать:) между тегами "[b][/b]"

Спустя 23 минуты, 24 секунды (22.12.2010 - 14:29) ИНСИ написал(а):
Гость_Дмитрий нужен файл, который непосредственно делает запрос к БД. Видимо, надо будет добавить еще 1 константу (с кодировкой к БД) и добавить в класс, который делает запрос к БД...

Спустя 15 минут, 5 секунд (22.12.2010 - 14:44) Гость_Дмитрий написал(а):
Фух, удалось разобраться..
В самом первом выложенном листинге, после строки

self::$_mHandler = new PDO('mysql:host=localhost;dbname=tshirtshop', 'tshirtshopadmin', 'tshirtshopadmin', array(PDO::ATTR_PERSISTENT => 'true'));

нужно было добавить

self::$_mHandler->exec('SET NAMES cp1251');


спасибо за помощь!

Спустя 19 минут, 7 секунд (22.12.2010 - 15:03) ИНСИ написал(а):
Гость_Дмитрий или так smile.gif мы же не видим ваши файлы все smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.