データベースに登録されているデータを更新する
SQL文にて更新する
現在、データベース「shop」でのテーブル「product」には以下のようなデータが入っています。この中の「卵」の値段をSQL文にて更新したいと思います。
左側の「shop」を選択し、SQLタブを開きます。「UPDATE」をクリックするとひな形が表示されます。
そして下記のように修正し、下にスクロールしたところにある「実行」をクリックします。
UPDATE product SET price =300 WHERE id=1 | 更新する行を指定するには、WHERE句を使います。idが1の行だけ更新する場合はid=1と記述します。 |
表示タブをクリックして確認すると、値段が変更になっています。
編集から更新する
編集からも簡単に更新できます。
「編集」をクリックすると下記のような画面になり、各種変更できます。ここでは価格を300円から400円にしてみます。
入力画面を作成し、商品データを更新する
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 ‘</form>’; } ?> <?php require ‘footer.php’; ?> | type属性をhiddenにする。これはフォームに商品番号を含めるのは、商品を更新する際に、商品番号の情報があるからです。 しかし、ユーザーに商品番号を変更することは許可したくありません。そこで、hiddenにすることによって、フォームに商品番号を含めつつも編集できないようにしています。 |
style.css
@charset “UTF-8”; .ib { display:inline-block; } .th0, .th1, .th2, .td0, .td1, .td2 { display:inline-block; padding-bottom:5px; } .th0, .th1, .th2 { text-align:center; font-weight:bold; } .th0, .td0 { width:5em; } .th1, .td1 { width:11em; } |
user-output.php
<?php require ‘header.php’; ?> <?php $pdo = new PDO(‘mysql:host=localhost;dbname=shop; charset=utf8′,’staff’,’password’); $sql = $pdo->prepare(‘update product set name=?, price=? where id=?’); if (empty($_REQUEST[‘name’])){ echo ‘商品名を入力してください’; } else if (!preg_match(‘/^[0-9]+$/’, $_REQUEST[‘price’])){ echo ‘価格は整数で入力願います。’; } else if($sql->execute([htmlspecialchars($_REQUEST[‘name’]), $_REQUEST[‘price’],$_REQUEST[‘id’]] )){ echo ‘追加できました’; }else { echo ‘追加できませんでした’; } ?> <?php require ‘footer.php’; ?> | update文を実行するには、prepareメソッドを用います。値を設定したい部分は「?」にしておきます *要注意 [0-9]+$にてプラスの前に空白は作らないこと。 |
試しに商品名を入れずに更新して、エラーが出るか確認してみましょう。
しっかりSQL文の通り表示されました。
次に価格を整数でない入力で更新してみましょう。
こちらもプログラム通り表示されました。
では、しっかり更新できるか確認してみましょう。牛乳を170円→200円にしてみます。
変更できていることが確認できました。