UI設計したり、ウェブシステムを開発したりします。 

SQL見るだけクエリ#237 PHPでデータベースクエリを簡単に実行するためのDatabaseQueryクラス

記入日:2023-09-02 編集日:2023-09-02

PHPでデータベースクエリを簡単に実行するためのDatabaseQueryクラスに関して解説をしてみようと思います。

この記事を読むと(約5分)
PHPでデータベースクエリを簡単に実行するためのDatabaseQueryクラスを使用する方法をイメージできます。

データベースクエリを簡単に実行

以下のコードは、データベースクエリを容易に実行するための DatabaseQuery クラスを示しています。このクラスは、データベース接続オブジェクトを受け取り、指定されたテーブルからデータを選択するための select メソッドを提供します。

このメソッドは、テーブル名、取得する列、条件、ソート順、制限などのパラメータを受け取り、それらを使ってSQLクエリを動的に構築し、データベースに送信します。クエリが成功しない場合、エラーメッセージを含む例外がスローされます。最終的に、クエリの結果は連想配列として取得され、呼び出し元に返されます。

class DatabaseQuery {
  private $db;

  public function __construct($db) {
    $this->db = $db;
  }

  public function select($table, $columns = '*', $where = '', $orderBy = '', $limit = '') {
    $query = "SELECT $columns FROM $table";

    if (!empty($where)) {
      $query .= " WHERE $where";
    }

    if (!empty($orderBy)) {
      $query .= " ORDER BY $orderBy";
    }

    if (!empty($limit)) {
      $query .= " LIMIT $limit";
    }

    $result = $this->db->query($query);

    if (!$result) {
      throw new Exception("Query failed: " . $this->db->error);
    }

    $data = array();

    while ($row = $result->fetch_assoc()) {
      $data[] = $row;
    }

    return $data;
  }
}

// このクラスを使用する例
$db = new YourDatabaseConnection(); // あなたのデータベース接続クラスに合わせて変更してください
$query = new DatabaseQuery($db);

// 例1: 全てのユーザーを取得
$users = $query->select('users');

// 例2: 特定の条件でフィルタリング
$activeUsers = $query->select('users', '*', 'status = "active"');

// 例3: カスタムカラムと制限を指定して取得
$topFiveProducts = $query->select('products', 'name, price', '', 'price DESC', '5');

このクラスを使用する例では、まずデータベース接続を確立し、それを $db オブジェクトに格納します。そして、この $db オブジェクトを使用して DatabaseQuery クラスのインスタンスを作成し、異なる条件でクエリを実行します。

たとえば、全てのユーザーを取得する場合、特定の条件でフィルタリングする場合、カスタムカラムを指定して制限付きでデータを取得する場合など、さまざまな操作が可能です。このクラスは、データベースクエリの生成と実行を簡素化し、コードの再利用性を高めるのに役立ちます。ただし、ユーザーからの入力データを直接クエリに組み込む場合は、セキュリティに留意する必要があります。

SQLの使いどころ

サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。

SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。

また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。

KK

機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。