2013-03-04 82 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