PDOによるデータベースアクセス (7/7)
作成:2012-07-29 17:02
更新:2012-07-29 17:02
更新:2012-07-29 17:02
■レコードの削除・更新
この他に必要となる操作としては、レコードの削除、そして既にあるレコードの内容を書き換えて更新する作業といったものが考えられますね。これらについても整理しておきましょう。
●レコードの削除
whereで条件を設定すると、その条件に合致するレコードを検索し、それらをすべて削除します。条件設定を間違えると、予想外のレコードを削除してしまうことになりかねないので注意が必要です。
●レコードの更新
そして、このupdateも、「どのレコードの内容を更新するのか」をwhereで条件を使って指定します。これにより、検索されたレコードのカラムがsetした内容に更新されます。複数のレコードが見つかった場合、それらのカラムがすべて指定の値に更新されてしまうので、くれぐれも検索条件を間違えないようにして下さい。
実際の利用例として、下に「名前を指定してレコードを削除する」というものを掲載しておきましょう。index.phpにフォームを用意しておき、ここに削除するレコードの名前を入力すると、その名前のレコードをすべて削除します。
――これで、レコードの新規作成、検索、更新、削除といった基本的な操作はできるようになりました。ざっと読み返してみればわかるように、操作の大半は「PHP」というより、「SQLのクエリー」で行なっていることがわかるでしょう。PDOで行なっているのは、ただ単に「SQLのクエリーを実行すること」だけに過ぎません。
本格的にデータベースを利用したい人は、PDOについてはもちろんですが、「SQLの使い方」についてもしっかり勉強するようにしてください。SQLが使いこなせるようになれば、PDO利用の基本はほぼマスターしたといってよいでしょう。
●レコードの削除
delete from テーブル where 条件削除は、「delete from テーブル」という形で実行します。ただし、これだけだと指定したテーブルのレコードを全部削除してしまうので、「どういうレコードを削除するか」といった情報を追記してやる必要があります。これを行うのが、検索で使った「where」です。
whereで条件を設定すると、その条件に合致するレコードを検索し、それらをすべて削除します。条件設定を間違えると、予想外のレコードを削除してしまうことになりかねないので注意が必要です。
●レコードの更新
update テーブルset カラム=値 where 条件レコードの更新は、「update テーブル」というものを使います。更新する内容は、「set」の後に、カラム名と設定する値を「カラム = 値」というように等号で記述します。複数のカラムを変更する場合は、それらをカンマで続けて記述します。set name = 'hoge',mail = 'hoge@hoge'といった具合ですね。
そして、このupdateも、「どのレコードの内容を更新するのか」をwhereで条件を使って指定します。これにより、検索されたレコードのカラムがsetした内容に更新されます。複数のレコードが見つかった場合、それらのカラムがすべて指定の値に更新されてしまうので、くれぐれも検索条件を間違えないようにして下さい。
実際の利用例として、下に「名前を指定してレコードを削除する」というものを掲載しておきましょう。index.phpにフォームを用意しておき、ここに削除するレコードの名前を入力すると、その名前のレコードをすべて削除します。
――これで、レコードの新規作成、検索、更新、削除といった基本的な操作はできるようになりました。ざっと読み返してみればわかるように、操作の大半は「PHP」というより、「SQLのクエリー」で行なっていることがわかるでしょう。PDOで行なっているのは、ただ単に「SQLのクエリーを実行すること」だけに過ぎません。
本格的にデータベースを利用したい人は、PDOについてはもちろんですが、「SQLの使い方」についてもしっかり勉強するようにしてください。SQLが使いこなせるようになれば、PDO利用の基本はほぼマスターしたといってよいでしょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※index.phpの送信フォーム
<table>
<form method="post" action="./remove.php">
<tr><td>検索テキスト:</td><td><input type="text" name="name"></td></tr>
<tr><td></td><td><input type="submit" value="送信"></td></tr>
</form>
</table>
※remove.phpのソースコード
<?php
$name = htmlspecialchars($_POST['name']);
try {
$pdo = new PDO("mysql:host=localhost;dbname=mysampledata;charset=utf8",
"root","");
$query = "delete from sampletable where name = '$name'";
$pdo->exec($query);
//echo $query;
} catch(PDOException $e){
echo "<html><body><h1>ERR:" . $e->getMessage() + "</h1></body></html>";
}
$pdo = null;
header('Location: index.php');
※関連コンテンツ