LoginSignup
5
5

More than 5 years have passed since last update.

個人的にハッカソンとかでよく使う簡易DBクラス

Posted at

ハッカソンに限らず、メンテナンスとかを考えずに、ちゃちゃっと実装したいような場合に、いつも似たようなのを書いてる気がしたので、共通部分を抜き出してみた。

ポイントは
- 環境依存性の少ないSQLite
- 最初のうちはDBごと作りなおすことが多いので、リセット込み
- 再利用することもあるのでクラスぐらい作っておく

<?php

class DB{

    function initDb(){
        date_default_timezone_set('Asia/Tokyo');
        $pdo = new PDO('sqlite:db');
        return $pdo;
    }

    function createDb(){
        $pdo = $this->initDb();
        $pdo->query("DROP TABLE db"); // 最初の1回だけコメントアウト
        $pdo->query("CREATE TABLE db(id,name)");
        $stmt = $pdo->prepare("INSERT INTO db VALUES(?,?)");
        $stmt->execute([1,"test"]);
    }

    function getResults(){
        $pdo = $this->initDb();
        $sql = "SELECT * FROM db";
        $stmt = $pdo->prepare($sql);
        $stmt->execute();
        $results = [];
        while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
            array_push($results,$result);
        }
        return $results;
    }

    function show(){
        $results = $this->getResults();
        foreach($results as $result){
            var_dump($result);
            echo "<br>".PHP_EOL;
        }
    }

}

$db = new DB();
if( isset($_GET["create"]) ){
    $db->createDb();
}
$db->show();

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5