2010-09-30 6 views
0

Возможно ли подключиться к базе данных вручную, используя любой набор драйверов для php, в CodeIgniter? Я бы просто открыл соединение в модели? У меня есть необходимость в том, что CodeIgniter не будет охватывать, но я бы хотел использовать его для своей MVC-архитектуры. Я просто не могу использовать его как ActiveRecord, как в демонстрациях с MySQL и т. Д.Как я могу подключиться к базе данных вручную в CodeIgniter?

Если я могу просто выполнить «обычное» соединение с базой данных без кодаIgniter, как мне получить информацию в моем контроллере?

Кроме того, я ошибаюсь в том, что вы хотите использовать CodeIgniter таким образом (никакой активной записи), но для всех других «вещей»?

спасибо.

ответ

3

Это очень простой пример использования функционального PHP для подключения к БД MySQL. Он приходит из руководства php. Поместите это в свою модель. Назовите его, вызвав модельную функцию обычным способом CI. Он вернет массив результатов, поэтому назначьте вызов модели переменной в контроллере.

<?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 
?> 

Вы можете использовать это в своем модельном методе. Давайте предположим, что вы возвращаете результаты

EDIT: переехал mysql_close выше оператора возврата

+0

Благодарю вас за помощь. – johnny

+0

В этом коде 'mysql_close ($ link);' никогда не будет выполняться ... :-) – Mischa

+0

Потому что это после оператора return? – kevtrout

2

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

например

$this->db->query(); 
+0

Я просто имею в виду, что я не хочу использовать встроенные драйверы, которые поставляются с CI. Я не знаю, как это сделать. – johnny

+0

Несмотря на то, что встроенные драйверы используют функциональные библиотеки, предоставляемые для каждой БД? то есть. драйверы MySQL для CI используют mysql_connect, mysql_query, mysql_fetch_assoc и т. д. Это и драйверы обрабатывают формальности, о которых вам не о чем беспокоиться. –

1

для ручного подключения к базе данных, просто обычный код

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