При подключении к внешней БД получаю знаки вопроса
Здравия всем.
Столкнулся с такой проблемой.
При попытке получить данные из внешней базы данных получаю знаки вопроса.
Кодировка таблицы и базы данных на другом сервере mysql utf-8.
При переносе этой базы данных и конкретно этой таблицы на сервер, где живёт modX, но под другого юзера (считай ничего не изменилось, разве что проверили глюки базы данных), продолжают показываться знаки вопроса.
При переносе этой таблицы в базу данных modX и выполнение кода
В чём может быть проблема?
Класс prichkVirtueMartProduct задаю так:
Столкнулся с такой проблемой.
При попытке получить данные из внешней базы данных получаю знаки вопроса.
$dsn = 'mysql:host='.$mySiteDB[dbhost].';dbname='.$mySiteDB[db].';port=3306;charset=utf-8';
$myDB = new xPDO($dsn,$mySiteDB[dbuser],$mySiteDB[dbpasswd]);
if($myDB->connect()){
echo 'Работаем.';
$results = $myDB->query("SELECT * FROM jos_vm_product limit 1");
$row = $results->fetch(PDO::FETCH_ASSOC);
echo '<pre>';
var_dump($row);
echo '</pre>';
}
Кодировка таблицы и базы данных на другом сервере mysql utf-8.
При переносе этой базы данных и конкретно этой таблицы на сервер, где живёт modX, но под другого юзера (считай ничего не изменилось, разве что проверили глюки базы данных), продолжают показываться знаки вопроса.
При переносе этой таблицы в базу данных modX и выполнение кода
if($o=$modx->getObject('prichkVirtueMartProduct', array('product_id' => '573'))){
$oa = $o->toArray();
echo '<pre>';
var_dump($oa);
echo '</pre>';
}
выводит правильную кодировку. В процессе переноса с таблицей никаких конвертаций не производится. На всех базах данных везде, где смог посмотреть стоит utf-8.В чём может быть проблема?
Класс prichkVirtueMartProduct задаю так:
$modx->map['prichkVirtueMartProduct'] = array (
'table' => 'jos_vm_product',
'fields' =>
array (
'product_id' => '',
'product_sku' => '',
'product_discount_id' => '',
'product_name' => '',
),
'fieldMeta' =>
array (
'product_id' => array(
'dbtype' => 'integer',
'phptype' => 'integer',
'null' => false,
'index' => 'pk',
'generated' => 'native',
'attributes' => 'unsigned',
),
'product_sku' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
//'index' => 'fulltext',
//'indexgrp' => 'content_ft_idx',
),
'product_discount_id' =>
array(
'dbtype' => 'integer',
'phptype' => 'integer',
'null' => false,
'attributes' => 'unsigned',
),
'product_name' =>
array (
'dbtype' => 'varchar',
'precision' => '255',
'phptype' => 'string',
'null' => false,
'default' => '',
//'index' => 'fulltext',
//'indexgrp' => 'content_ft_idx',
),
),
);
Комментарии: 4
А можно как-то свой вопрос в вопросы поместить?
Сам отвечаю на свой вопрос.
где-то скопировал параметры $dsn в инете, где была указана кодировка utf-8
правильный код
PS Так а где. Конечно в официальном RTFM. А оно оказывается с ошибочкой.
rtfm.modx.com/xpdo/2.x/getting-started/using-your-xpdo-model/database-connections-and-xpdo
где-то скопировал параметры $dsn в инете, где была указана кодировка utf-8
правильный код
$dsn = 'mysql:host='.$mySiteDB[dbhost].';dbname='.$mySiteDB[db].';port=3306;charset=utf8';
Тогда всё работает.PS Так а где. Конечно в официальном RTFM. А оно оказывается с ошибочкой.
rtfm.modx.com/xpdo/2.x/getting-started/using-your-xpdo-model/database-connections-and-xpdo
А в файле config.inc.php всё норм…
Я тоже недавно писал подключение к сторонней БД, и также видел где-то «utf-8», кстати не на rtfm.modx.com, а в другом месте. В первую очередь полез сравнивать с конфигом MODX, т.к. это рабочий вариант.
Обновлено
Кстати и в офф, и тут для xPDO 2.2+ описано, как «utf8». Так что проблема не в некорректной записи в RTFM, а в банальной невнимательности разработчика.
$database_dsn = 'mysql:host=localhost;dbname=base;charset=utf8';
Я тоже недавно писал подключение к сторонней БД, и также видел где-то «utf-8», кстати не на rtfm.modx.com, а в другом месте. В первую очередь полез сравнивать с конфигом MODX, т.к. это рабочий вариант.
Обновлено
Кстати и в офф, и тут для xPDO 2.2+ описано, как «utf8». Так что проблема не в некорректной записи в RTFM, а в банальной невнимательности разработчика.
Defining Multiple Connections мне было без надобности.
К тому же я не вкурил, как в Multiple Connections переключаться между соединениями базы, поэтому в тот код не вчитывался.
А мы тут типа выискиваем виноватого что ли?!
К слову сказать, ссылка, которая офф равносильна ссылке, где я вычитал utf-8.
Кстати, на той же офф ссылке в Example Connection указана та же самая utf-8. То есть в начале страницы два раза указана неправильная информация.
К тому же я не вкурил, как в Multiple Connections переключаться между соединениями базы, поэтому в тот код не вчитывался.
А мы тут типа выискиваем виноватого что ли?!
К слову сказать, ссылка, которая офф равносильна ссылке, где я вычитал utf-8.
Кстати, на той же офф ссылке в Example Connection указана та же самая utf-8. То есть в начале страницы два раза указана неправильная информация.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.