Codeigniter для нескольких баз данных, conn_id возвращает объект, даже если соединение не установленоPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Codeigniter для нескольких баз данных, conn_id возвращает объект, даже если соединение не установлено

Сообщение Anonymous »

Я прочитал несколько публикаций и официальные руководства о том, как подключить более одной базы данных в CI. В настоящее время я подключаюсь к базе данных приложения по умолчанию, используя стандартную конфигурацию data.php, и при необходимости загружаю другую базу данных на лету. Основная цель этой части приложения — наличие функции «импорта», с помощью которой пользователь пользователя вводит данные о подключении к сторонней базе данных на лету по запросу.

Пока данные о подключении ко второй базе данных установлены правильно, приложение работает очень просто. Когда в конфигурации соединения возникает ошибка, я не нашел рабочего метода, позволяющего оценить, что соединение не может быть установлено с другой базой данных.

Я обнаружил, что могу проверить, является ли $db->conn_id ложным, чтобы в конечном итоге вернуть ошибку пользователю, но по каким-то причинам он возвращает объект, несмотря ни на что.

Это краткий пример того, что я делаю внутри модели:

Код: Выделить всё

function plugin_subscribers_import_sfguard($channel_id)
{
// Get the channel object by its ID
$channel = $this->get_channel_by('id',$channel_id);

// Set the preferences for the second database
// from the channel informations we retrieved
$db['hostname'] = $channel->host;
$db['username'] = $channel->user;
$db['password'] = $channel->password;
$db['database'] = $channel->db;
$db['dbdriver'] = "mysql";
$db['pconnect'] = FALSE;
$db['db_debug'] = TRUE;

// Open the connection to the 2nd database
$other_db = $this->load->database($db,TRUE);

if ( ! $other_db->conn_id )
{
// This never gets executed as $other_db->conn_id always
// returns: "resource(34) of type (mysql link)"
return false;
}
else
{
// Execute the rest of the import script
$other_db->select('*');
$other_db->from('sf_guard_user');
$other_db->join('sf_guard_user_profile',
'sf_guard_user_profile.id=sf_guard_user.id',
'inner');
$query = $other_db->get();
}
}
Интересно, есть ли что-то, что я не понял из всего этого, или я использую неверную логику для оценки того, правильно ли открыто соединение с базой данных-получателем.

Я также пытался попытаться обнаружить проблему с подключением, но безуспешно.

Заранее спасибо за всю поддержку, которую вы можете предложить.
Федерико

Подробнее здесь: https://stackoverflow.com/questions/166 ... tion-fails
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»