Подключения к базе данных
Последнее обновление not available | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$204 per month—let's make that $500!
Learn moreПодключения xPDO к базе данных¶
Подключение к базе данных в xPDO задаётся в конструкторе. Один экземпляр xPDO держит одно подключение, но вы можете создать сколько угодно экземпляров xPDO. Сигнатура конструктора такая:
function xPDO($dsn, $username= '', $password= '', $options= array(), $driverOptions= null)
Допустим, вы хотите подключиться к локальной базе test на порту 3306 с кодировкой utf-8:
$dsn = 'mysql:host=localhost;dbname=test;port=3306;charset=utf8';
$xpdo = new xPDO($dsn,'username','password');
Готово.
При желании проверьте подключение, добавив после этого строку:
echo $o=($xpdo->connect()) ? 'Connected' : 'Not Connected';
xPDO создаёт объект PDO и подключается к базе только когда вызывается метод PDO и соединение действительно нужно. Такое подключение по требованию позволяет кэшированию xPDO работать без обязательного соединения с БД (если всё уже в кэше).
Подробнее о параметрах см. на странице Конструктор xPDO.
После подключения вам нужно загрузить пакет.
Пример подключения¶
Пример скрипта для подключения к внешней базе данных:
<?php
define('MODX_CORE_PATH', '/path/to/revo/core/');
define('MODX_CONFIG_KEY','config');
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
// Criteria for foreign Database
$host = 'localhost';
$username = 'your_username';
$password = 'your_password';
$dbname = 'your_database';
$port = 3306;
$charset = 'utf8';
$dsn = "mysql:host=$host;dbname=$dbname;port=$port;charset=$charset";
$xpdo = new xPDO($dsn, $username, $password);
// Test your connection
echo $o = ($xpdo->connect()) ? 'Connected' : 'Not Connected';
// Issue queries against the foreign database:
$results = $xpdo->query("SELECT id FROM some_table");
$recordCount = $results->rowCount();
print $recordCount;
Несколько подключений (xPDO 2.2+)¶
В xPDO 2.2 появилась возможность задавать несколько подключений и опции конфигурации для атрибутов только для чтения на каждое соединение. Так xPDO можно использовать в схемах master/slave. Функция не предназначена для выбора конкретного узла БД. Она настраивает master/slave, где один или несколько узлов только для чтения, а хотя бы один доступен для записи (mutable). Тогда вы можете запросить начальное подключение только для чтения, и xPDO автоматически переключится на writable-соединение, если над объектом БД выполнят операцию записи.
xPDO::OPT_CONNECTIONS¶
Чтобы задать дополнительные подключения для экземпляра xPDO, передайте массив массивов конфигурации соединений в параметре $options конструктора xPDO. Каждый массив соединения задаёт те же параметры, что и вызов конструктора xPDO. Пример вызова конструктора с несколькими подключениями только для чтения:
$xpdo = new xPDO('mysql:host=127.0.0.1:19570;dbname=xpdotest;charset=utf8', 'username', 'password' array(
xPDO::OPT_CONN_MUTABLE => true,
xPDO::OPT_CONN_INIT => array(xPDO::OPT_CONN_MUTABLE => false),
xPDO::OPT_CONNECTIONS => array(
array(
'dsn' => 'mysql:host=127.0.0.1:19571;dbname=xpdotest;charset=utf8',
'username' => 'username',
'password' => 'password',
'options' => array(
xPDO::OPT_CONN_MUTABLE => false,
),
'driverOptions' => array(),
),
array(
'dsn' => 'mysql:host=127.0.0.1:19572;dbname=xpdotest;charset=utf8',
'username' => 'username',
'password' => 'password',
'options' => array(
xPDO::OPT_CONN_MUTABLE => false,
),
'driverOptions' => array(),
),
),
));
xPDO::OPT_CONN_MUTABLE¶
Эта опция задаёт изменяемость (mutability) определённого соединения: только чтение или запись разрешена. Её можно указать в массиве $options конструктора и в options каждого дополнительного соединения.
xPDO::OPT_CONN_INIT¶
Эта опция задаёт критерии, которым должно соответствовать соединение, чтобы xPDO выбрал его как начальное. В конфигурациях master/slave типичное значение (его задают один раз в основных опциях) означает инициализацию read-only или immutable-соединения.
xPDO::OPT_CONN_INIT => array(xPDO::_OPT_CONN_MUTABLE => false)
Так xPDO сначала выбирает соединение с этой опцией, равной false. Если после инициализации read-only соединения внутри xPDO выполнят запись, будет выбрано новое mutable-соединение и закэшировано для повторного использования другими операциями записи в том же цикле выполнения.
Смотрите также¶
Конструктор xPDO PDO::__construct()
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$204 per month—let's make that $500!
Learn more










