PHPとSQliteを使用して簡易的な掲示板を作ってみる

スポンサーリンク

このページではソースコードの一部分を簡単な解説をしています。

作成した掲示板はコチラから
ソースコードはgithubにあります

スポンサーリンク

概要

PHPを使いデータベースを操作する練習の為に掲示板を作ってみました。データベースはSQliteを使用し、プログラミング言語PHPのPDOを使ってデーターベースを操作しています。

データベースの作成

データベースの作成にはVisual Studio Codeの拡張機能SQliteを使用しました。

テーブルの内容は下の図のようにしました。

idカラムはレス番号、nameカラムには投稿者の名前、dateカラムには投稿日時、messageカラムにはコメントの内容をそれぞれ保持させていきます。

PHPのPDOを使ってデータベースに接続

PDOクラスをインスタンス化する。

function getPdoInstance()
{
try{
    $pdo = new PDO('sqlite:データベースのパス'); //  PDOの引数に(sqlite:データベースのパス)で指定する
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // エラーが起きた時例外を投げる
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); // 連想配列形式でデータを取得する
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // 指定した型に合わせる

    return $pdo;
    
    }catch(PDOException $e){
    //echo $e->getMessage();
    exit('エラーが発生しました');
    }
}

PDOクラスの引数にデータベースファイルが置いてあるパスを指定します。これでデータベースの接続は完了です。必要に応じてsetAttributeメソットで属性をセットします。今回は3つ属性をセットしました。

フォームから送られてきた値をテーブルへ追加する

先程生成したPDOインスタンスを使いフォームから送られてきた値をテーブルへ追加していきます。フォームからは名前と日付とコメント内容が送られてくるので、それぞれを変数に代入した後にPDOでクエリを実行をします。

    // テーブルへ追加
    $stmt = $pdo->prepare("INSERT INTO test (name, date, message) VALUES (:name, :date, :message)");
    $stmt->bindValue('name', $name);
    $stmt->bindValue('date', $date);
    $stmt->bindValue('message', $message);
    $stmt->execute();

prepareメソッドの引数にクエリをセットして、クエリの中に挿入したい変数がある場合はbindValueメソッドで割り当てたい値を引数にセットします。最後にexecuteメソッドを使用しクエリを実行させます。

テーブルからデータを取得

    // データーを取得
   $stmt = $pdo->prepare("SELECT * FROM テーブル名");
    $stmt->execute();
    $stmts = $stmt->fetchAll();

データを追加したときと同じようにprepareメソッドにクエリをセットしてexecuteメソッドでクエリを実行します。取得したデータはfetchAllメソッドで取得できます。

CSRF対策を行う

トークンを利用したCSRF対策を行いまいした。

最後までお読みいただきありがとうございました。

タイトルとURLをコピーしました