ハッカソンに限らず、メンテナンスとかを考えずに、ちゃちゃっと実装したいような場合に、いつも似たようなのを書いてる気がしたので、共通部分を抜き出してみた。
ポイントは
- 環境依存性の少ない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();