商品データを削除させるSQL文について
以前に作った下記の2のデータを削除してみましょう。
phpMyAdminからSHOP、productを選択し、SQLタブから「DELETE」をクリックします。ひな形書式が表示されますのでid=2と修正し、「実行」をクリック。
id2の情報が消せましたね。「表示」タブからでも確認してみましょう。
「id=2」が削除されていますね。
もちろん、もっと簡単なのは「削除」をクリックすることです。でも、いろいろな方法を学びましょう。
入力画面に「削除」を作り、商品データを削除する。
完成形はこんな感じです。削除のリンクを作成し、ここでは3を削除してみます。
表示タグから確認しても、id3のカップラーメンが削除されていることが確認できます。
それでは早速、作ってみましょう。
user-input.php
<?php require ‘header.php’; ?> <div class=”th0″>商品番号</div> <div class=”th1″>商品名</div> <div class=”th1″>価格</div> <?php $pdo = new PDO(‘mysql:host=localhost;dbname=shop; charset=utf8′,’staff’,’password’); foreach ($pdo->query(‘select * from product’) as $row){ echo ‘<form action=”user-output.php” method=”post”>’; echo ‘<input type=”hidden” name=”id” value=”‘, $row[‘id’], ‘”>’; echo ‘<div class=”td0″>’, $row[‘id’], ‘</div>’; echo ‘<div class=”td1″>’; echo ‘<input type=”text” name=”name” value=”‘, $row[‘name’], ‘”>’; echo ‘</div>’; echo ‘<div class=”td1″>’; echo ‘<input type=”text” name=”price” value=”‘, $row[‘price’], ‘”>’; echo ‘</div>’; echo ‘<div class=”td2″><input type=”submit” value=”更新”></div>’; echo ‘<a href=”delete-output.php?id=’, $row[‘id’],'”>削除</a>’; echo ‘</form>’; } ?> <?php require ‘footer.php’; ?> | 「リクエストパラメータを伴うリンクの使用」 <a>タグを利用してます。 そしてdelete-output.phpが開きます。次にどの行を削除するのかを示すために、リクエストパラメータで商品番号を渡すためリンク先のファイルの後に?を付けます。 「書式;リンク先ファイル?リクエストパラメータ名=値」 |
delete-output.php
<?php require ‘header.php’; ?> <?php $pdo = new PDO(‘mysql:host=localhost;dbname=shop; charset=utf8′, ‘staff’,’password’); $sql = $pdo->prepare(‘delete from product where id=?’); if ($sql->execute([$_REQUEST[‘id’]])){ echo ‘削除できました’; } else { echo ‘削除できませんでした’; } ?> <?php require ‘footer.php’; ?> | delete from product where id=?では値を設定したい部分を「?」にしておきます。 delete文を実行するには、prepareメソッドを使います。 ?の部分に設定したいのは商品番号です。商品番号はリクエストパラメータのidに入っているので、$_REQUEST[‘id’]]で取得できます。配列にするため[ ]で囲みます。 この配列をexecuteメソッドに渡してSQL文を実行します。 |