SQL文にて商品データを追加する。
商品名と価格を入力して、データベースにそのデータを追加します。
そのためには例えば下記のような形でデータベース「shop」を指定しSQLタブを開きSQL文を書きます。
insert into product values(null, ‘きゅうり’ , 100); | insert文にて指定したテーブルに対して新しい行を追加することができます。values()を使って新しい行に設定する列の値を入れます。自動的に割り当てられるid列の値はnullとしています。nullは値が未設定であることを示します。 |
上記のようなSQL文を入力をして実行すると、下記のようにproductテーブルの末尾に追加されます。
挿入タグを使ってデータを追加する
下記のようなテーブルの中にデータを追加したいときには、挿入タグをクリックします。
nameににんじん、priceに190と入力します。idには入力しなくても、自動で付与されるように設定しています。()
すると下記のような画面になり、追加されたことが表示されます。表示タグをクリックし、確認してみましょう。
確認してみましょう。データが追加されてますね。
入力画面から商品データを追加してみよう
insert-input.php
<?php require ‘header.php’; ?> <p>商品データを追加します</p> <form action=”user-output.php” method=”post”> 商品名<input type=”text” name=”name”> 価格<input type=”text” name=”price”> <input type=”submit” value=”追加”> </form> <?php require ‘footer.php’; ?> |
次に上記で入力した商品名と価格を使って、データベースに商品データを追加するPHPスクリプトを作成しましょう。
user-output.php
<?php require ‘header.php’; ?> <?php $pdo = new PDO(‘mysql:host=localhost;dbname=shop; charset=utf8′,’staff’,’password’); $sql = $pdo->prepare(‘insert into product values(null, ?, ?)‘); if($sql->execute([$_REQUEST[‘name’],$_REQUEST[‘price’]])){ echo ‘追加できました’; }else { echo ‘追加できませんでした’; } ?> <?php require ‘footer.php’; ?> | 入力フォームで値を設定したい部分は「?」にしてあります。ここではnameとpriceです。 executeメソッドは成功するとTRUE、失敗するとFALSEを返します。 |
試しに下記内容を追加してみます。
phpMyadminで商品一覧を確認すると、テーブルの最後に「やきそば」が追加されているのがわかります。
入力値を確認してからデータを追加する
ユーザーが入力した値が適切かどうかを確認して、追加されるようにします。
user-output.php
<?php require ‘header.php’; ?> <?php $pdo = new PDO(‘mysql:host=localhost;dbname=shop; charset=utf8′,’staff’,’password’); $sql = $pdo->prepare(‘insert into product values(null, ?, ?)’); if (empty($_REQUEST[‘name’])){ echo ‘商品名を入力してください’; } else if (!preg_match(‘/^[0-9]+$/’, $_REQUEST[‘price’])){ echo ‘価格は整数で入力願います。’; } else if($sql->execute([htmlspecialchars($_REQUEST[‘name’]), $_REQUEST[‘price’]] )){ echo ‘追加できました’; }else { echo ‘追加できませんでした’; } ?> <?php require ‘footer.php’; ?> | empty関数は引数として指定された値が空の時にTRUEを返します。 preg_match関数は第一引数に正規表現内容を、第二引数に指定した値が該当するかを調べます。「!」は条件を反転させます。+は直前の文字が1個以上のことを意味します。 htmlspecialchars関数はHTMLタグを無効化させ、無用なプログラムをいれさせないようにします。 |