При подключении к внешней БД получаю знаки вопроса

Здравия всем.
Столкнулся с такой проблемой.
При попытке получить данные из внешней базы данных получаю знаки вопроса.
$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',
    ),
    
    ),
);
Евгений Ка
31 марта 2016, 20:32
modx.pro
1
2 097
-2

Комментарии: 4

Павел Гвоздь
01 апреля 2016, 05:08
0
А можно как-то свой вопрос в вопросы поместить?
    Евгений Ка
    02 апреля 2016, 01:45
    0
    Сам отвечаю на свой вопрос.
    где-то скопировал параметры $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
      Павел Гвоздь
      02 апреля 2016, 10:39
      0
      А в файле config.inc.php всё норм…

      $database_dsn = 'mysql:host=localhost;dbname=base;charset=utf8';

      Я тоже недавно писал подключение к сторонней БД, и также видел где-то «utf-8», кстати не на rtfm.modx.com, а в другом месте. В первую очередь полез сравнивать с конфигом MODX, т.к. это рабочий вариант.

      Обновлено

      Кстати и в офф, и тут для xPDO 2.2+ описано, как «utf8». Так что проблема не в некорректной записи в RTFM, а в банальной невнимательности разработчика.
        Евгений Ка
        02 апреля 2016, 11:39
        -1
        Defining Multiple Connections мне было без надобности.
        К тому же я не вкурил, как в Multiple Connections переключаться между соединениями базы, поэтому в тот код не вчитывался.
        А мы тут типа выискиваем виноватого что ли?!
        К слову сказать, ссылка, которая офф равносильна ссылке, где я вычитал utf-8.
        Кстати, на той же офф ссылке в Example Connection указана та же самая utf-8. То есть в начале страницы два раза указана неправильная информация.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4