記入日:2023-08-24 編集日:2023-08-24
配列データ一括INSERT用のクラスを作成してコードを共通化する方法に関して解説をしてみようと思います。
この記事を読むと(約5分)
配列データ一括INSERT用のクラスを作成してコードを共通化する方法に関してイメージできます。
以下は、PHPでデータベースに新しい行を挿入するための2つのクラス DatabaseConnection と InsertQueryBuilder です。 また、これらのクラスを使用してデータを挿入する際の使用例も示しています。
class DatabaseConnection {
private $pdo;
public function __construct($host, $dbname, $user, $password) {
try {
$this->pdo = new PDO("mysql:host={$host};dbname={$dbname}", $user, $password);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
throw new Exception("Database connection failed: " . $e->getMessage());
}
}
public function getPdo() {
return $this->pdo;
}
}
class InsertQueryBuilder {
private $table;
private $data;
public function __construct($table, $data) {
$this->table = $table;
$this->data = $data;
}
public function buildQuery() {
$fields = implode(', ', array_keys($this->data));
$placeholders = ':' . implode(', :', array_keys($this->data));
$query = "INSERT INTO {$this->table} ({$fields}) VALUES ({$placeholders})";
return $query;
}
public function execute(PDO $pdo) {
$query = $this->buildQuery();
$stmt = $pdo->prepare($query);
foreach ($this->data as $key => $value) {
$stmt->bindValue(":{$key}", $value);
}
$stmt->execute();
}
}
// 使用例
$databaseHost = 'localhost';
$databaseName = 'your_database';
$databaseUser = 'your_user';
$databasePassword = 'your_password';
try {
$dbConnection = new DatabaseConnection($databaseHost, $databaseName, $databaseUser, $databasePassword);
$pdo = $dbConnection->getPdo();
$data = [
'name' => 'John Doe',
'email' => 'john@example.com',
'age' => 30
];
$tableName = 'users';
$insertQueryBuilder = new InsertQueryBuilder($tableName, $data);
$insertQueryBuilder->execute($pdo);
echo "Data inserted successfully!";
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
各クラスと使用例の部分を説明します。
DatabaseConnectionクラス:
このクラスは、データベース接続を確立するために使われます。コンストラクタが提供されたホスト名、データベース名、ユーザー名、パスワードを使用してPDO接続を初期化し、エラーモードをエラーハンドリングに適したものに設定します。getPdo() メソッドは、初期化されたPDO接続を外部に提供します。
InsertQueryBuilderクラス:
このクラスは、新しい行をデータベースに挿入するためのクエリを構築および実行します。コンストラクタでは、挿入するデータの配列とテーブル名を受け取ります。
buildQuery() メソッドは、与えられたデータ配列からINSERT文のクエリを構築します。配列内のキー(カラム名)を使用してINSERT文のカラム部分を生成し、対応するプレースホルダーを値部分に生成します。
execute() メソッドは、提供されたPDO接続を使用してクエリを実行します。データ配列内の値をプレースホルダーにバインドして、新しい行をデータベースに挿入します。
使用例:
この部分では、実際の使用例が示されています。データベース接続情報や挿入するデータを用意し、DatabaseConnection クラスを使用してPDO接続を取得します。その後、InsertQueryBuilder クラスを使って、挿入するデータの配列とテーブル名を指定し、execute() メソッドを呼び出してデータベースにデータを挿入します。エラーハンドリングも行っています。
これによって、提供されたデータが指定されたテーブルに新しい行として挿入される処理が行われます。
SQLの使いどころ
サイトに大量の情報を掲載することは、ユーザーにとってとても便利なことです。しかし、情報が多すぎると、目的の情報を見つけるのが困難になります。そのため、SQLを使用することで、情報を効率的に管理することができます。
SQLを使用することで、データベース内の情報を検索したり、フィルタリングしたりすることができます。これにより、ユーザーは目的の情報をスムーズかつ簡単に見つけることができます。
また、SQLを使用することで、データを集計したり、統合したりすることもできます。これにより、ユーザーはさまざまな視点から情報を分析することができます。つまり、サイトに多くの情報を掲載することが重要である一方で、その情報を効率的かつ簡単に管理することが求められる場合には、SQLが不可欠であるといえます。
KK
機械工学を専攻。工業デザイナーとして、国内及び海外の自動車・搬送ラインの設計などに従事した後、2003年にウェブシステム会社を設立。UI設計やウェブシステムの開発、DX化のディレクションなどを行っています。