<?php
$debug = true;
// ▼▼h関数の読み込み▼▼
// ▼▼POST形式で受け取った値(新規登録する商品情報)を各変数に代入▼▼
$item = isset($_POST['item']) ? $_POST['item'] : NULL;
$price = isset($_POST['price']) ? $_POST['price'] : NULL;
$stock = isset($_POST['stock']) ? $_POST['stock'] : NULL;
$keyword = isset($_POST['keyword']) ? $_POST['keyword'] : NULL;
$maker = isset($_POST['maker']) ? $_POST['maker'] : NULL;
// 参考演算子を使って値が届いているか確認
// 届いている:届いた値を変数に代入
// 届いていない:NULLを変数に代入
// ▼▼上記で定義した変数からユーザが登録し得るスペースを削除▼▼
$item = trim($item);
$price = trim($price);
$stock = trim($stock);
$keyword = trim($keyword);
$maker = trim($maker);
// trim関数:引数に指定した文字列の、先頭及び末尾にあるホワイトスペースを取り除き、
// その結果を値として返す
// ホワイトスペースとは:半角スペース、タブ、改行
// 本来、引数には文字列型を設定しなければならないが、NULLは''に置き換える
// trim関数では全角スペースは削除できない
// 全角スペースも対応させるには、文字の置き換え用関数にて''に置き換える
// もしくは、trim関数の前で、mb_convert_kana関数により全角スペースを半角に変換しておく
// ▼▼各変数に空文字を代入▼▼
$message = ''; //実行結果を出力
$btn = ''; //次のページに移動するリンクボタン
// ▼▼メッセージ用、リンクボタン用 の変数を定義▼▼
if ($item == '' or $maker == '') {
// 条件式:入力必須項目である商品名かメーカーが定義されていない
// ⇒入力・選択されていない
$message = '必須項目を入力してください';
フォームに戻る
</a>';
} else {
// ▼▼DB接続と準備▼▼
or die(mysqli_error($dbobj));
mysqli_select_db($dbobj, 'practice');
mysqli_set_charset($dbobj, 'utf8');
// ▼▼セキュリティ処理▼▼
$item = mysqli_real_escape_string($dbobj, $item);
$price = mysqli_real_escape_string($dbobj, mb_convert_kana($price, 'n'));
$stock = mysqli_real_escape_string($dbobj, mb_convert_kana($stock, 'n'));
$keyword = mysqli_real_escape_string($dbobj, $keyword);
$maker = mysqli_real_escape_string($dbobj, mb_convert_kana($maker, 'n'));
// mysqli_real_escape_string関数:
// セキュリティ用関数
// SQLインジェクション攻撃に対する対応
// 「"」「'」をエスケープして「\"」「\'」
// 第一引数:接続許可証※DB接続後しか使えない
// 第二引数:エスケープ対象文字列
// mb_convert_kana関数
// 対象文字列を一定のルールに基づいて変換する
// 全角・半角を変換する
// mb_convert_kana($price, 'n')
// 第一引数:変換対象の値
// 第二引数:文字列で変換ルールを指定
// n:全角数字を半角にする
// ユーザ入力値でSQL文を作成する際は、セキュリティ上の理由から文字列連結を使わない
// ▼▼INSERT文を生成し【$sql】に代入▼▼
'INSERT INTO stationery SET
item="%s", price=%d, stock=%d, keyword="%s",maker=%d',
$item,
$price,
$stock,
$keyword,
$maker
);
// ↑↑sprintf関数:文字列を書式のルールに則ってフォーマットする関数
// 第一引数:基準となる文字列(変換指定子を含む)
// ※変換指定子:「%d(整数)」「%s(文字列)」など
// 「%d(整数)」を指定された所に違うデータ型が入った場合、「0」に変換される
// 第二引数以降:変換指定子に当てはめる値
// 戻り値:基準となる文字列の変換指定子に、第二引数以降に指定した値を入れ込んだ文字列
// ▼▼上記で生成したINSERT文【$sql】でDBへのレコード挿入を実行▼▼
// ▼▼メッセージ用変数▼▼
$message = '新規登録しました';
// ▼▼一覧表示に戻る用変数▼▼
}
?>
<!DOCTYPE html>
<html>
<head>
<title>商品管理システム</title>
</head>
<body>
<div class="debug">
</div>
<div id="container">
<div id="head">
<h1>新規登録</h1>
</div>
<div id="content">
<!--#content-->
</div>
<!--#container-->
</div>
</body>
</html>
↓ ↓ ↓