2010-09-30 10 views
0

Est-il possible de se connecter à une base de données manuellement, en utilisant n'importe quel ensemble de pilotes pour php, dans CodeIgniter? Aurais-je simplement ouvrir une connexion dans le modèle? J'ai un besoin que CodeIgniter ne couvrira pas mais je voudrais l'utiliser pour son architecture MVC. Je ne peux pas utiliser ActiveRecord comme dans les démos avec MySQL, etc.Comment puis-je me connecter manuellement à une base de données dans CodeIgniter?

Si je peux simplement faire une connexion de base de données non-CodeIgniter "régulière", comment puis-je obtenir les informations dans mon contrôleur?

Aussi, ai-je tort de vouloir utiliser CodeIgniter de cette manière (pas d'enregistrement actif) mais pour tous ses autres "trucs"?

Merci.

Répondre

3

Ceci est un exemple très simple d'utiliser PHP fonctionnel pour se connecter à un base de données mysql. Il vient du manuel php. Mettez ceci dans votre modèle. Appelez-le en appelant une fonction de modèle de la manière CI classique. Il retournera le tableau des résultats, alors assignez l'appel du modèle à une variable dans votre contrôleur.

<?php 
function my_model_query(){ 
    //replace the function arguments with your information 
    $link = mysql_connect('host_name', 'mysql_user', 'mysql_password'); 
    if (!$link) { 
     die('Could not connect: ' . mysql_error()); 
    } 
    //your code here 
    $query = "SELECT * FROM mytable"; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_assoc($result)){ 

     $result_array[]['your_field_1'] = $row['your_field_1']; 
     $result_array[]['your_field_2'] = $row['your_field_2']; 
     //and so on 

     } 

    //close the connection when you are done 
    mysql_close($link); 

    //send results back to controller 
    return $result_array; 


}//endfunction 
?> 

Vous pouvez l'utiliser dans votre méthode de modélisation. Supposons que vous retournez les résultats

EDIT: déplacé mysql_close ci-dessus instruction return

+0

merci pour votre aide. – johnny

+0

Dans ce code 'mysql_close ($ link);' ne sera jamais exécuté ... :-) – Mischa

+0

Parce que c'est après la déclaration de retour? – kevtrout

2

Je ne sais pas vraiment quel est votre problème, mais vous pouvez exécuter une requête sans l'enregistrement actif.

par exemple

$this->db->query(); 

+0

Je veux juste dire que je ne veux pas utiliser le construit dans les pilotes qui viennent avec CI. Je ne sais pas comment le faire. – johnny

+0

Même si les pilotes intégrés utilisent les bibliothèques fonctionnelles fournies pour chaque DB? c'est à dire. les pilotes MySQL pour CI utilisent mysql_connect, mysql_query, mysql_fetch_assoc, etc. Cela, et les pilotes gèrent les formalités que vous n'avez pas à vous soucier. –

1

pour la connexion manuelle à la base de données, juste le code normal

$link = mysqli_connect('localhost','root','','db_iris'); 
Questions connexes