Skip to content

Instantly share code, notes, and snippets.

@YNSTakeru
Last active April 6, 2024 06:14
Show Gist options
  • Save YNSTakeru/8e21831f8002ce7fad98bb37776a726c to your computer and use it in GitHub Desktop.
Save YNSTakeru/8e21831f8002ce7fad98bb37776a726c to your computer and use it in GitHub Desktop.
データベースの呼び出し処理
  <?php
require_once "datasource.php";

use db\DataSource;

try {
    $db = new DataSource;
    $db->begin();
    $sql = 'SELECT * FROM projects';

    $result = $db->select($sql);

    echo "<pre>";
    print_r($result);
    echo "</pre>";

    $db->commit();
} catch (PDOException $e){
    echo '時間をおいて再度お試しください。<br>';
    $db->rollback();
}
Databaseのクラス
  <?php

namespace db;

use PDO;

class DataSource
{

    private $conn;
    private $sqlResult;

    public function __construct($host = "mysql", $dbName = "team_weekly_report", $username = "root", $password = "root")
    {

        $dsn = "mysql:host={$host};dbname={$dbName};port=3306;";
        $this->conn = new PDO($dsn, $username, $password);

        $this->conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $this->conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    }

    public function select($sql = "", $params = [])
    {
        $stmt = $this->executeSql($sql, $params);
        return $stmt->fetchAll();
    }

    public function execute($sql = "", $params = [])
    {
        $this->executeSql($sql, $params);
        return $this->sqlResult;
    }

    public function selectOne($sql = "", $params = [])
    {
        $result = $this->select($sql, $params);
        return count($result) > 0 ? $result[0] : false;
    }

    public function begin()
    {
        $this->conn->beginTransaction();
    }

    public function commit()
    {
        $this->conn->commit();
    }

    public function rollback()
    {
        $this->conn->rollback();
    }

    private function executeSql($sql, $params)
    {
        $stmt = $this->conn->prepare($sql);
        $this->sqlResult = $stmt->execute($params);
        return $stmt;
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment