Здравствуйте! Возникла необходимость передавать определенные данные из БД портала на Битриксе (mysql) в другую БД (ms sql). Данные должны передаваться при определенном событии (при нажатии на кнопку, например). Возникли проблемы с подключением к БД ms sql. Не знаю, можно ли вообще подключать вторую БД к порталу, хотя бы временно, для того чтобы данные передать.
Пробовали подключить несколькими способами:
1)
Код |
---|
$serverName = "servername";
$connectionInfo = array( "Database"=>"database", "UID"=>"login", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Соединение удалось.<br />";
}else{
echo "Соединение не удалось, ошибка:";
print_r( sqlsrv_errors(), true);
}
|
Так соединиться не получалось. Почему это происходило, непонятно, текст ошибки не выводился.
2)
Код |
---|
$DBHOST = "servername";
$DBNAME = "database";
$DBLOGIN = "login";
$DBPASSWORD = "password";
$OUTDB = new CDatabase;
if($OUTDB->Connect($DBHOST, $DBNAME, $DBLOGIN, $DBPASSWORD)){
echo "Соединение удалось.<br />";
$res = $OUTDB->Query("SEL ECT * FR OM Table", false, $err_mess.__LINE__);
}
else{
echo "Соединение не удалось, ошибка:";
} |
Тут выводил, что соединение удалось, но когда пытались выполнить какие-либо запросы, выводил ошибку: Fatal error: ob_start() [<a href='ref.outcontrol'>ref.outcontrol</a>]: Cannot use output buffering in output buffering display handlers inC:\Bitrix\www\bitrix\modules\intranet\classes\general\toolbar.php on line 63
3)
Код |
---|
try {
$hostname = "servername";
$dbname = "database";
$username = "login";
$pw = "password";
$dbh = new PDO ("dblib:host=$hostname;dbname=$dbname","$username","$pw");
} catch (PDOException $e) {
echo "Failed to get DB handle: " . $e->getMessage() . "\n";
exit;
} |
Тут сразу выводит такую же ошибку: Fatal error: ob_start() [<a href='ref.outcontrol'>ref.outcontrol</a>]: Cannot use output buffering in output buffering display handlers inC:\Bitrix\www\bitrix\modules\intranet\classes\general\toolbar.php on line 63
4)
В .settings в connections:
Код |
---|
'old_db' => array(
'className' => '\\Bitrix\\Main\\DB\\MssqlConnection',
'host' => 'servername',
'database' => 'database',
'login' => 'login',
'password' => 'password',
'options' => 2,
), |
После этого подключаюсь и пытаюсь выполнить запрос:
Код |
---|
$connection = Bitrix\Main\Application::getConnection('old_db');
$sqlHelper = $connection->getSqlHelper();
$sql = "SEL ECT * FR OM Table";
$recordset = $connection->query($sql); |
Та же ошибка: Fatal error: ob_start() [<a href='ref.outcontrol'>ref.outcontrol</a>]: Cannot use output buffering in output buffering display handlers inC:\Bitrix\www\bitrix\modules\intranet\classes\general\toolbar.php on line 63
Как еще можно подключиться к базе данных ms sql? Может я неправильно подключаюсь? Может вообще нельзя подключаться к другой БД? А есть ли какие-либо другие способы передавать какие-либо данные из битриксовой БД в другую?