2010-09-23 3 views
2

Si je configure mon application CI pour utiliser la base de données pour la gestion de session, si une session userdata renvoie la valeur false, je peux supposer que la session de l'utilisateur a expiré. Mais que se passe-t-il si la raison réelle pour laquelle il a renvoyé la valeur false est que la connexion à la base de données n'a pas été établie avec succès?

+1

Si vous ne pouvez pas vous connecter à la base de données, alors il n'y a aucun moyen que vous allez être en mesure d'utiliser leurs données de session ... – Matthew

Répondre

0

CI lance

A Database Error Occurred 
Unable to connect to your database server using the provided settings. 

ou quelque chose de similaire en cas d'échec de connexion

+0

Ce ne se produit que si vous avez db_debut = TRUE dans votre database.php . –

+0

Existe-t-il un moyen d'obtenir un message d'erreur plus détaillé? Par exemple, mot de passe erroné, port fermé, etc. – digz6666

5

Par défaut CodeIgniter erreur fatale si la base de données est chargée et ne peut pas se connecter, mais si vous avez:

$db['local']['db_debug'] = FALSE; 

alors ça ne te le dira pas. Vous pouvez activer le débogage off en général, mais encore réagir à une charge a échoué en faisant ceci:

if ($this->load->database() === FALSE) 
{ 
    exit('THE END IS NIGH!'); 
} 
+3

Cela n'a pas vraiment fonctionné pour moi. J'utilise des groupes db et peut-être que la logique est légèrement différente ici, mais load-> database ("group", TRUE); semble retourner un objet mysql même s'il ne parvient pas à se connecter. Au lieu de cela, j'ai dû désactiver l'auto-allumage et vérifier si db-> initialize() est faux à la place. – Lewis

+0

Oui, cette réponse ne fonctionne vraiment pas. Si la base de données est déjà chargée avec succès, les appels suivants pour charger la base de données retourneront toujours FALSE. –

+0

Correct. Ne l'appelle pas plusieurs fois? :) –

1

Je teste tout ce que je trouvais et rien wokrs, la seule façon que j'ai trouvé avec DBUtil vérifier si la base de données existe.

$this->load->database(); 
$this->load->dbutil(); 

// check connection details 
if(!$this->dbutil->database_exists('myDatabase')) 
    echo 'Not connected to a database, or database not exists'; 
Questions connexes