データの作成、取得、更新、削除

この節では、リレーショナル DAS を使用してリレーショナルデータベースの データを作成し、取得し、更新して削除する方法を説明します。 以下の例のほとんどで使用しているのは、3 つのテーブル (company、department、employee) からなるデータベースで、 会社の中には部署が存在し、部署には従業員が所属しているという構造です。 これは、SDO の資料中の例でも使用されています。 » Service Data Objects specification の例か、SDO 拡張モジュールのマニュアルの を参照ください。

リレーショナル DAS は、リレーショナルデータベースの定義 およびそれをどのように SDO に関連付けるかを定義したメタデータを 使用して作成されます。これ以降で、メタデータの構造 およびリレーショナル DAS の作成方法について説明します。 以下の例では、インクルードされた PHP ファイル内に メタデータが存在するものとします。

以下で説明する例およびその他の例は、リレーショナル DAS パッケージの Scenarios ディレクトリ内に存在します。

メタデータに間違いがあった場合、あるいはデータベースに対する SQL 文の実行時にエラーが発生した場合には、リレーショナル DAS は例外をスローします。簡潔に説明するため、以下の例では リレーショナル DAS のコールの際の try/catch ブロックの使用を 省略しています。

これらの例は、SDO が想定している使用法とは 以下の 2 つの点で大きく異なります。

まず、ここではデータベースに対するすべての操作を ひとつのスクリプト内で完結させています。これは現実的ではありませんが、 リレーショナル DAS の使用法を説明するという点でこの方法を選択しました。 通常は、データベースに対する処理はいくつかに分割され、そのたびに PHP セッションへのデータグラフの保存やそこからの引き出しが発生します。 これにより、アプリケーションがユーザーと対話的なやりとりをすることになるでしょう。

2 番目に、データベースに対するすべてのクエリがハードコーディングされており、 変数の置換を使用していません。例の中で使用するのは安全な executeQuery() コールであり、 例について説明するためにこのようにしています。 しかし、実際に使用する場合は、すべての SQL 文が安全であるとは限りません。 SQL クエリ内での変数の置換を安全に行い、SQL インジェクションを防ぐには、 executePreparedQuery() でプレースホルダを含むプリペアドステートメントを使用し、 置換する値のリストを渡します。