2013-03-04 3 views
-2

Я в настоящее время новичок в CodeIgniter, и я пытаюсь получить простую базу данных MVC для работы, но это не так. Я пытаюсь выбрать запись из таблицы и отобразить ее на веб-странице, но вместо этого получаю ошибки. Я отправлю мой код ниже, так что вы можете увидеть, что я работаю с:codeigniter код базы данных не работает

Модель:

function grabData() { 

    $sql = "SELECT * FROM books WHERE id = 1"; 
    $config['hostname'] = "localhost"; 
    $config['username'] = "root"; 
    $config['password'] = ""; 
    $config['database'] = "bookstore"; 
    $config['dbdriver'] = "mysql"; 
    $config['dbprefix'] = ""; 
    $config['pconnect'] = FALSE; 
    $config['db_debug'] = TRUE; 
    $config['cache_on'] = FALSE; 
    $config['cachedir'] = ""; 
    $config['char_set'] = "utf8"; 
    $config['dbcollat'] = "utf8_general_ci"; 

    // manually connect to database 
    $this->load->database($config, TRUE); 

    // do some stuff 
    $query = $this->db->get('books'); 
    if ($query->num_rows() > 0) { 
     return true; 
    } else { 
     return false; 
    } 


} 

Контроллер:

$web['title'] = "CI Hello World App!"; 
$this->load->view('helloworld_view', $web); 

$this->load->model('helloworld_model'); 
$data['result'] = $this->helloworld_model->grabData(); 

$this->load->view('helloworld_view', $data); 

Содержание таблицы:

1  The Grapes of Wrath   John Steinbeck  12.99 
2  Ninteen Eighty-Four   George Orwell  8.99 
3  The Wind-Up Bird Chronicle  Haruki Murakami 7.99 

Ошибка:

A PHP Error was encountered 

Severity: Notice 

Message: Undefined variable: result 

Filename: views/helloworld_view.php 

Line Number: 8 

null 

boolean true 

Я не показывал вид, потому что я чувствовал, что это не был источником проблемы. Любая помощь будет оценена по достоинству. Благодаря!

+0

Вы получаете результат запроса правильно? – Shaolin

+0

Вы знаете, что возвращаете что-либо из содержимого таблицы, не так ли? И почему вы дважды загружаете свой взгляд? –

+0

Мое представление - это просто пустая веб-страница с переменной результата, повторяемой так: JaPerk14

ответ

0

В модели можно использовать:

$query = $this->db->get('books'); 
    if ($query->num_rows() > 0) { 
     return $query->result_array(); 
    } else { 
     return false; 
    } 

и вид нагрузки контроллер только один раз:

$data['title'] = "CI Hello World App!"; 

$this->load->model('helloworld_model'); 

$data['result'] = $this->helloworld_model->grabData(); 

$this->load->view('helloworld_view', $data); 

Таким образом, в виде вы можете получить доступ титул $title и результат, как $result

+0

Я только что заметил это сейчас. Как я могу отправить несколько переменных в один вид, не загружая один и тот же взгляд дважды? – JaPerk14

+0

Jut как в приведенном выше примере. $ data ['result'] = $ this-> helloworld_model-> grabData(); $ data ['title'] = "CI Hello World App!"; etc ......... – Shaolin

+0

вы можете отправить несколько переменных в один вид, используя один массив с разными именами переменных: $ data ['title'] = 'something'; $ data ['page'] = 'something'; –

1

проблема в том, что вы ничего не возвращаете.

$query = $this->db->get('books'); 
if ($query->num_rows() > 0) { 
    return true; 
} else { 
    return false; 
} 

Вы не возвращаете результат, поэтому результат пуст на представлениях,

$query = $this->db->get('books'); 
if ($query->num_rows() > 0) { 
    return $query->result(); // return a result() or row() or row_array() 
} else { 
    return false; 
} 

здесь сокращенная версия return $query->num_rows() > 0 ? $query->result() : FALSE; этот образец будет возвращать object далее в

http://ellislab.com/codeigniter/user-guide/database/results.html

Смежные вопросы