勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Codeigniter4でMySQLに接続しCRUD操作する方法

   2024/01/06  PHP MySQL CodeIgniter データベース

Codeigniter4.4.4でMySQLに接続しCRUD操作したい。また、任意のSQL文を発行したい時もあると思うのでその操作方法もあわせてメモ。

 

リファレンス

https://ci-trans-jp.gitlab.io/user_guide_4_jp/database/index.html

 

MySQL設定

過去記事を参考の上でMySQL設定を行っておく。

 

サンプルテーブルの作成

今回は例として以下のようなテーブルを作成した。

mysql> SHOW COLUMNS FROM sample_table;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int          | NO   | PRI | NULL    | auto_increment |
| name       | varchar(255) | NO   |     | NULL    |                |
| age        | int          | NO   |     | NULL    |                |
| update_ymd | datetime     | NO   |     | NULL    |                |
| regist_ymd | datetime     | NO   |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

 

MySQLの操作

データベース接続及びテーブルの指定

//データベースへの接続
$db = \Config\Database::connect();

//テーブル指定
$builder = $db->table('sample_table');

データの挿入

$now = date('Y-m-d H:i:s');
$data = [
    'name'  => '山田太郎',
    'age'  => '20',
    'update_ymd' => $now,
    'regist_ymd' => $now,
];

$builder->insert($data);

データの読み込み

$query = $builder->get();
foreach ($query->getResult() as $row){
    var_dump($row);
}

limit指定やWhere検索したいような場合はこちらのリファレンスを参照する。

データの更新

$now = date('Y-m-d H:i:s');
$data = [
    'name'  => '山田太郎編集',
    'age'  => '30',
    'update_ymd' => $now,
];
$builder->update($data, ['id' => 1]);

データの削除

$builder->delete(['id' => 1]);

任意のSQL文の発行

$sql = '
    INSERT INTO sample_table 
        (
            `name`,
            `age`,
            `update_ymd`,
            `regist_ymd`
        ) 
    VALUES 
        (
            ' . $db->escape($data['name']) . ',
            ' . $db->escape($data['age']) . ',
            ' . $db->escape($data['update_ymd']) . ',
            ' . $db->escape($data['regist_ymd']) . '
        )
';
$query = $db->query($sql);

 

所感

実運用にあたって

データの挿入・更新は特殊なSQL文を発行するケースは少ないのでクエリビルダクラスを使用し、検索時は任意のSQL文を発行する形になりそう。削除は普段行わない(論理削除する)ので特に気にする必要は無し。

ページャーに関して

MySQLのデータ検索時となるとページネーション機能も基本的にはセットになると思う。ページネーション用ライブラリも用意されているので、こちらの記事等を参考に実装したいところ。

 - PHP MySQL CodeIgniter データベース

  関連記事

CodeIgniter4でコントローラ実行の前後に指定したイベントを実行する方法

CodeIgniter4で特定の条件の場合は指定したページにリダイレクトさせたい ...

Codeigniter4でエラーログ設定、出力及び確認方法

Codeigniter4.4.4でエラーログの設定を行い特定のファイルに出力させ ...

CodeIgniter4でCronを実行する方法

CodeIgniter4.4.4で特定の処理をCronで自動実行させたい。以下に ...

CodeIgniterのバージョンの調べ方

CodeIgniterを使っているシステムがあったが、どうも記憶しているディレク ...

CodeIgniter4でのメール送信方法(テキスト・HTMLメール)

CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...