| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
autoPrepare & autoExecuteautoPrepare & autoExecute – SQL 文を自動的に準備・実行する
Description目的autoPrepare() および autoExecute() は、うんざりするような INSERT、UPDATE、DELETE や SELECT 文を書く手間を軽減します。 これらの SQL 文を使用していると、例えばテーブルにフィールドを追加した場合などの メンテナンスが大変ですよね? autoPrepare() および autoExecute() を使用するには、 Extended モジュールを 使用する必要があります。 'user' テーブルに次の 3 つのフィールド (id, name そして country) があるとしましょう。 きっと、こんな SQL クエリを書くことになるでしょう。 INSERT INTO table (id, name, country) VALUES (?, ?, ?) UPDATE table SET id=?, name=?, country=? WHERE ... ここでフィールドを追加 (例えば 'birthYear' など) したとすると、 クエリを書き直さなければなりません。これはうんざりするような作業であり、 (ひとつだけクエリの修正を忘れてしまうなどの) バグの元となります。 autoPrepareautoPrepare() を使用すると、insert や update、delete そして select といったクエリを書く必要がなくなります。例を見てみましょう。
<?php
この例では、 autoPrepare() は以下の SQL クエリを作成します。 INSERT INTO user (id, name, country) VALUES (?, ?, ?) それから、そのクエリを用いて prepare() をコールします。 レコードを追加するには execute() あるいは executeMultiple() を次のように使用します。
<?php
どうです? SQL の INSERT 文を一切書く必要がないのです! そしてこれは UPDATE や DELETE でも同様に動作します。ただし、柔軟性を確保するため、クエリの WHERE 句だけは書かなければなりません。 例えばこのようになります。
<?php
autoPrepare() は、次のようなクエリを作成します。 UPDATE user SET name=?, country=? WHERE id=1 それから、そのクエリを使用して prepare() をコールします。 注意しなければならないのは、もし WHERE 句を指定しなければ、 テーブルの全レコードが更新されてしまうということです。 autoExecuteinsert、update、delete あるいは select クエリを実行する最も簡単な方法が、 autoExecute() をコールすることです。 これは autoPrepare() と execute() を組み合わせたものです。 必要なのは連想配列だけです。連想配列のキーにフィールド名、 対応する値としてそのフィールドの値を指定します。 これは、insert や update クエリの場合にのみ影響します。 例を見てみましょう。
<?php
たったこれだけです! これで、次のクエリが作成され、そして実行されます。 INSERT INTO user (id, name, country) VALUES (1, 'Fabien', 'France')
UPDATE クエリについても同様です。
<?php
これで、以下のクエリが作成され、そして実行されます。 UPDATE user SET name='Fabien', country='France' WHERE id = 1
注意しなければならないのは、もし WHERE 句を指定しなければ、 テーブルの全レコードが更新されてしまうということです。 これが DELETE クエリの例です。
<?php
これで、以下のクエリが作成され、そして実行されます。 DELETE FROM user WHERE id = 1
最後に SELECT クエリの例を見てみましょう。
<?php
これで、以下のクエリが作成され、そして実行されます。 SELECT name, country FROM user WHERE id = 1
See |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「autoPrepare & autoExecute」をGoogle検索
|