выборка данных из внешней БД
настроил соединение с внешней базой данных
теперь надо взять оттуда данные, но я чтото делаю не так… а может и все не так )))))
теперь надо взять оттуда данные, но я чтото делаю не так… а может и все не так )))))
$query="SELECT Clients FROM STATUSSERV";
$count = $modx->exec($query);
print("Clients online: $count");
посоветуйте что нибудь :) Комментарии: 11
после запроса
print_r($modx->errorInfo());
Array ( [0] => 42S02 [1] => 1146 [2] => Table 'sitedb.STATUSSERV' doesn't exist )
как я понимаю он пытается к базе сайта соединитьсяа сделано это так
$dsn = "mysql:host=$host;dbname=$dbname;port=$port;charset=$charset";
$modx->addConnection($dsn, $username, $password);
выше указаны данные для внешней базы и коннект с ней есть
ну либо коннекта с бд нет, либо нет такой таблицы…
коннект то есть но не туда судя по всему :)
он не к внешней баз обращается с выборкой а к базе сайта
он не к внешней баз обращается с выборкой а к базе сайта
попробуйте как
function getXPDO($dsn, $user, $password, $prefix = '', $config_options = null, $driver_options = null)
{
$config_options = [
xPDO::OPT_CACHE_PATH => MODX_CORE_PATH.'cache/',
xPDO::OPT_TABLE_PREFIX => $prefix,
];
$driver_options = [
PDO::MYSQL_ATTR_LOCAL_INFILE => true,
//PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
try {
/** @var xPDO $xpdo */
$xpdo = new xPDO($dsn, $user, $password, $config_options, $driver_options);
if ($xpdo AND is_object($xpdo)) {
$xpdo->setLogLevel(xPDO::LOG_LEVEL_ERROR);
$xpdo->setLogTarget('HTML');
if ($xpdo->connect()) {
return $xpdo;
}
}
} catch (PDOException $e) {
die('database connection failed: '.$e->getMessage());
}
return false;
}
$xpdo = getXPDO($dsn, $username, $password);
$query="SELECT Clients FROM STATUSSERV";
$count = $xpdo->exec($query);
print("Clients online: $count");
print_r($xpdo->errorInfo());
так не работает совсем
так какую ошибку то дает?
500 ^)
скорее всего где то кривой код, смотрите логи сервера
xpdoobject.class.php : 240) Error HY000 executing statement:
Array
(
[0] => HY000
[1] => 2014
[2] => Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
)
Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.попробуйте указать
$driver_options = [
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
];
либо пользовать вместо exec, query -> fetch$stmt = $xpdo->query('SELECT Clients FROM STATUSSERV');
if ($stmt) {
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->closeCursor();
print_r($row);
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.