-2

私は現在 CodeIgniter の初心者で、単純な MVC データベースを機能させようとしていますが、うまくいきません。テーブルからレコードを選択して Web ページに表示しようとしていますが、代わりにエラーが発生します。以下にコードを投稿して、私が何を扱っているかを確認できるようにします。

モデル:

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

問題の原因ではないと感じたため、ビューを表示しませんでした。どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

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

于 2013-03-04T06:22:20.577 に答える
0

モデルではこれを使用します:

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

コントローラー負荷ビューで 1 回だけ:

$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

于 2013-03-04T06:31:31.113 に答える