2013-03-04 114 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 2013-03-04 06:21:37

+0

你知道你正在返回任何表格內容,對吧?你爲什麼要加載你的觀點兩次? – 2013-03-04 06:22:21

+0

我的看法只是一個空白的網頁,其結果變量如此回顯:<?php echo $ result; ?> – JaPerk14 2013-03-04 06:26:05

回答

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 2013-03-04 06:34:43

+0

Jut就像上面的例子。 $ data ['result'] = $ this-> helloworld_model-> grabData(); $ data ['title'] =「CI Hello World App!」; etc ......... – Shaolin 2013-03-04 06:36:31

+0

你可以使用不同變量名稱的單個數組發送多個變量到單個視圖,如: $ data ['title'] ='something'; $ data ['page'] ='something'; – 2013-03-04 06:38:33

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