Codeigniter3 でDBからデータ取得して表示まで

準備として testdbを作り、サンプルデータを投入しておきます。

$ mysql -u root -p
MariaDB [(none)]> CREATE DATABASE testdb DEFAULT CHARACTER SET utf8;

MariaDB [(none)]> USE testdb;
Database changed

MariaDB [testdb]> CREATE TABLE IF NOT EXISTS `tbl_users` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ID',
  `name` VARCHAR(255) NOT NULL DEFAULT 'hoge' UNIQUE COMMENT '名前'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'ユーザー';

MariaDB [testdb]> INSERT INTO tbl_users (id, name) VALUES ('0','hoge');
Query OK, 1 row affected (0.00 sec)

MariaDB [testdb]> SELECT * FROM tbl_users;
+----+------+
| id | name |
+----+------+
|  1 | hoge |
+----+------+
1 row in set (0.00 sec)

データベース接続設定を適宜編集しておきます。

$ vi application/config/database.php
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'testdb',

モデルファイルを用意しておきます。
※cakephpのように、モデルファイル名とモデルクラス名とテーブル名は一緒じゃなくてOK。フリーダム

$ vi application/models/Users_model.php
db->get('tbl_users', 1);
                return $query->result();
        }
}

コントローラにモデルの使用を追記します。

$ vi application/controllers/Api.php
load->model('Users_model', '', TRUE);
                // DBアクセス
                $result = $this->Users_model->get();
                $resp = [];
                foreach ($result as $k => $v) {
                    $resp[] = $v->name; // hoge
                }
                // JSON出力する場合
                $this->output
                    ->set_content_type('application/json')
                    ->set_output(json_encode($resp));

                // テンプレートへ出力する場合
                $data['title'] = 'タイトルタイトル';
                $data['body'] = '本文本文';
                $this->load->view('xxx_tpl', $data);

        }
}

テンプレートへ出力する場合

$ application/view/xxx_tpl.php


        <?php echo $title; ?> // ←$dataではなく$titleをechoしている


        

ブラウザでアクセスします。

{"hoge"}

デバッグにはプロファイラが便利です。

$this->output->enable_profiler(true);

実行されたクエリだけを確認したい時はこんな感じでも。

foreach ($this->db->queries as $k => $v) {
        echo str_replace("\n", "", $v) . "\n";
}

参考
http://pneskin2.nekoget.com/codeigniter/3/user_guide/general/models.html