2.テスト用のデータベースを用意する
2-1.データベースの作成
まずは下記のコマンドでデータベースを作成する。
mysql> CREATE DATABASE sampledb;
2-2.データベースの確認
データベースが作成されたことを確認する。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sampledb |
| sys |
+--------------------+
5 rows in set (0.00 sec)
3.テスト用のテーブルを用意する
3-1.テーブルの作成
下記のコマンドでテスト用のテーブルを作成する。
mysql> create table sampledb.person_info(id int not null primary key auto_increment, name varchar(50), age varchar(3), seibetu varchar(3), address varchar(255));
3-2.テスト用のテーブル構造
今回のテスト用テーブル構造は以下
mysql> show columns from person_info;
+---------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | YES | | NULL | |
| age | varchar(3) | YES | | NULL | |
| seibetu | varchar(3) | YES | | NULL | |
| address | varchar(255) | YES | | NULL | |
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
3-3.テストデータの用意
テストデータのDMLは以下のような感じで適当に用意
insert into sampledb.person_info(name, age, seibetu, address) values ("test1", "20", "0", "tokyo shibuyaku");
insert into sampledb.person_info(name, age, seibetu, address) values ("test2", "23", "1", "tokyo chuouku");
insert into sampledb.person_info(name, age, seibetu, address) values ("test3", "26", "0", "tokyo bunkyouku");
3-4.データが挿入されたかを確認する
以下のコマンドを叩いてテストデータが保存されているかを確認する。
select * from person_info;
+----+-------+------+---------+-----------------+
| id | name | age | seibetu | address |
+----+-------+------+---------+-----------------+
| 1 | test1 | 20 | 0 | tokyo shibuyaku |
| 2 | test2 | 23 | 1 | tokyo chuouku |
| 3 | test3 | 26 | 0 | tokyo bunkyouku |
+----+-------+------+---------+-----------------+
3 rows in set (0.00 sec)
3-5.補足
まずは文字コードの確認
show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysqlの設定ファイルに以下を追加する
/etc/my.cnf
[mysqld] ←これは最初からあるのであったら書かなくてよい
....
character-set-server=utf8 #mysqldセクションの末尾に追加
[client]
default-character-set=utf8 #clientセクションを追加
設定後、MySQLを再起動する
変更されているか再度確認
show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)
4.FuelPHP側のDB設定ファイルに接続情報を定義する
以下に移動する
fuel/app/config/development
db.php
<?php
/**
* The development database settings. These get merged with the global settings.
*/
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=sampledb', //php5.5以前の場合は、MySQLのデフォルトport番号を使用していれば、特に指定しなくても良い。
'username' => 'saiki-y',
'password' => 'test',
),
),
);
※ MySQLのポートの確認
mysql> show variables like 'port';
5.接続処理
以下のコントローラーファイル内のindex部分を修正
fuel/app/classes/controller/welcome.php
USE \DB;
・・・・
public function action_index()
{
$query= DB::select()->from('person_info');
$results=$query->execute();
$view= 'welcome/index';
$twig= View_Twig::forge($view);
$presenter= Presenter::forge($view, 'view', null, $twig);
$presenter-> set('results', $results);
return Response::forge($presenter);
}
6.取得したデータを画面に表示する
出力画面のHTMLはこんな感じ
app/views/welcome/index.twig
<DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>FuelPHP Framework</title>
</head>
<body>
personal_infoテーブル内のデータ</br>
{% for result in results %}
{{loop.index}}件目</br>
"Id" : {{result.id}}</br>
"名前" : {{result.name}}</br>
"年齢" : {{result.age}}</br>
"性別" : {{result.seibetu}}</br>
"住所" : {{result.address}}</br>
{% endfor %}
</body>
<html>
7.もし実行時に以下のようなDBエラーが発生した場合
DBドライバーがインストールされていない場合は、以下のようなエラーが発生する
Fuel\Core\Database_Exception [ Error ]: could not find driver
ドライバーをインストールしてあげよう。
インストール後、apacheを再起動する
service httpd restart
再起動後、アプリケーションへアクセスを行い挙動が上記のエラーが発生しないことを確認
8.出力結果
アクセスすると以下の用にperson_infoテーブル内のデータをすべて取得して画面に出力できている。
以上