非常に基本的な質問です。データベースへのクエリを生成する関数を作成しています。これには2つのアプローチがあり、どちらが優れているかわかりません。
まず、必要なクエリを生成するための 1 つの大きな関数を作成することです。基本的には次のとおりです。
function generateQuery($object, $queryType, $tableName, $conditions = null) {
//Then in here some more complex code that generates query,
//some of stuff like double if shorthands etc, for example:
$string = ($queryType === "INSERT") ? "INSERT INTO {$table} (" : (($queryType === "UPDATE") ? "UPDATE {$table} SET" : "SELECT");
//So all the code for generating INSERT, UPDATE and SELECT in one function
//full of conditions.
}
または、クエリの種類ごとに個別の関数を作成することもできます。
結局、最初の解決策はそれほど複雑ではなく、2 番目の解決策はコード内でいくらかの繰り返しを行うことになりますが、それでも少し間違っているように感じます。
次に、後で PDO トランザクションを使用したいので、次のような関数を用意します。
function launchQueries($list) {
$this->handler->beginTransaction();
for($i = 0; $i < count($list); $i++)
{
$this ->launchQuery($list[i]->object, $list[i]->$table, $list[i]->queryType, $list[i]->conditions);
}
$this->handler->commit();
}
またはそのようなもの、まだ作成していないため、この正確なコードが機能するかどうかはわかりません.
とにかく、1 つの関数でクエリを生成すると、クエリをリストに渡し、1 つのループを実行してすべてを生成して実行することができます。しかし、それはまだ間違っていると感じています。それはまったくこのように行われますか、それとも別のより良い解決策がありませんか?