Работа с удаленным сервером mysql

Доброго времени суток!

Вот код подключения к удаленной бд
<?php

ini_set("display_errors",1);
error_reporting(E_ALL);


// Задаем подключения к сторонней базе данных:
$host = 'text';                // — хост.
$username = 'text';    // — имя пользователя.
$password = 'text';   // — пароль пользователя.
$databasename = 'text'; // — имя базы данных.
$port = 3306;                       // — номер порта.
$charset = 'utf-8';                 // — кодировка.

// Соединяемся с базой данных:
$dsn = "mysql:host=$host;dbname=$databasename;port=$port;charset=$charset";
$xpdo = new xPDO($dsn, $username, $password);

// Проверяем успешность подключения:
echo $o = ($xpdo->connect()) ? 'Подключились…' : 'Не удалось подключиться!';



$results = $xpdo->query("SELECT * FROM modx_po_site_content");
$kolichestvo_zapisei = $results->rowCount();
echo 'Обнаружено записей: '. $kolichestvo_zapisei;

Все здорово подключается! SELECT отрабатывает и выдает 753 записи(в бд столько же), все ок

Но вот пытаюсь работать так:
$res = $xpdo->getObject('modResource',1);
$output = $res->get('pagetitle');
return $output;
ошибка
Fatal error: Call to a member function get() on a non-object in

Сниппет вызывается на странице сайта.
Что-то еще нужно подключить или подковырять?
Аль все так на чистом MySQL работать придется?
Константин Ильин
19 февраля 2015, 22:34
modx.pro
1
2 868
0

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

Константин Ильин
20 февраля 2015, 01:35
-1
?
    Василий Наумкин
    20 февраля 2015, 06:14
    0
    Кажется, ты забыл указать table_prefix:
    $config_options = array(
    	xPDO::OPT_TABLE_PREFIX => 'modx_'
    );
    $xpdo = new xPDO($database_dsn, $database_user, $database_password, $config_options);
      Константин Ильин
      20 февраля 2015, 12:12
      0
      Думал про него т.к. даже исходя из логики, что необходимо указывать его.

      Но это не помогло.
      попробовал другой код
      $q = $xpdo->newQuery('modResource');
      $q->prepare();
      $q->stmt->execute();
      $results = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
      
      print_r($results);
      
      foreach($results as $result){
              
          echo $result['modResource_pagetitle'];
          
      }
      ошибку не выдает, но все же results пустой
      Константин Ильин
      04 ноября 2016, 19:46
      0
      Ребят подскажите, как правильно работать с подключение к сторонней бд

      // Соединяемся с базой данных:
      $dsn = "mysql:host=$host;dbname=$databasename;port=$port;charset=$charset";
      $config_options = array(xPDO::OPT_TABLE_PREFIX => 'modx_');
      $xpdoH = new xPDO($dsn, $username, $password,$config_options,[PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION]);
      
      // Проверяем успешность подключения:
      if($xpdoH->connect())
      {
          echo '<div class="alert alert-success">Подключение к БД  - <strong>Успешно</strong></div>';
      }else{
          echo '<div class="alert alert-danger">Подключение к БД  - <strong>НЕ Удалось</strong></div>';
          return;
      }
      Данный код обрабатывает норм, подключение успешно.

      Далее, делаю такой код:
      $h = $xpdoH->query("SELECT * FROM modx_site_content WHERE parent = 2");
      $res_hl = $h->fetchAll(PDO::FETCH_ASSOC);
      Выводит все норм.

      Но хотелось бы работать с обьектами, т.е. так:
      $hr = $xpdoH->newQuery('modResource');
      $hr->select(array('modResource.*'));
      $hr->prepare();
      $hr->stmt->execute();
      $res_hr = $hr->stmt->fetchAll(PDO::FETCH_ASSOC);
      Но этот код выдает пустой массив…

      Запрос распечатываю вижу такие строчки:
      [sql] => SELECT modResource.* FROM  AS `modResource`
      Т.е. после FROM не указана таблица

      Подскажите пожалуйста, что надо сделать?
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        4