練習問題

12.9 練習問題

本章で習った内容を元に練習問題を解いてください。

問1 次の設問①~⑤について○か×で答えなさい。

設問
① PHPでデータベースの操作する方法は、直ぐ利用できるように初めから用意されている。
② データベースの操作方法は、利用するデータベースサーバによって変わることはない。
③ データベースの操作方法は、手順を守って行う必要がある。
④ データベースに発行できるSQL文は、利用しているデータベースサーバに準じる。
⑤ 全てのSQL文を発行した後は、サーバにデータが保存されているので開放を必ず行う。

問2 以下に示すmysqli関数が、図①~⑥のデータベース操作のどの部分に該当するのか答えなさい。

mysqli関数

mysqli_num_rows関数
mysqli_select_db関数
mysqli_close関数
mysqli_query関数
mysqli_connect関数
mysqli_free_result関数
mysqli_fetch_array関数

データベース操作図

問3 別の画面から受け取ったPOSTデータを利用して、指定した「SQL文の内容」のSQL文を作成しなさい。

POSTデータ

$_POST[‘id’];
$_POST[‘name’];
$_POST[‘price’];

SQL文の内容

iteminfoテーブルより、idが「$_POST[‘id’]」を含む、またはnameが「$_POST[‘name’]」を含む、または、priceが「$_POST[‘price’]」以上のデータを「idの降順(数値の大きい順)」に並び替えて検索しなさい。

SQL文格納変数

ヒント
  • 検索条件を記述:WHERE句の後に記述する
  • 含む検索方法:LIKE 項目名 ‘%検索値%’
  • またはの検索方法:条件1 OR 条件2
  • 以上の検索方法:項目名 >= 検索値
  • 並び替えの記述方法(降順):ORDER BY 項目名 DESC

問4 以下に示すデータベース操作の処理で、引数で受け取ったSQL文を発行しその結果を返す目的を持ったユーザー定義関数に含めることができる処理なのか○か×で答えなさい。

データベース操作の処理

① MariaDBサーバの接続情報の設定
② MariaDBサーバへの接続処理
③ 使用するデータベースの選択処理
④ データベースへのSQL文発行処理
⑤ SQL文発行後の個別処理
⑥ 結果セットの開放処理
⑦ MariaDBサーバの切断

問5 本章の12.6.1のプログラムを、12.7.1で作成した「dbprocess.php」を使った方法に修正しなさい。

ソースコード

ソース・フォルダー: myproj_basic/ch12exercise
パッケージ: practiceForm1201.php
アクセスURL:http://localhost/myproj_basic/ch12exercise/practiceForm1201.php

修正内容

■insertForm.phpからの変更点
  • ファイル名は「practiceForm1201.php」にする。
  • <form>タグのaction先は「practice1201.php」と指定する。
ソースコード

ソース・フォルダー: myproj_basic/ch12exercise
パッケージ: practice1201.php
アクセスURL:practiceForm1201.phpからの画面遷移でアクセスされる

修正内容

■insertQuery.phpからの変更点
  • ファイル名は「practice1201.php」にする。
  • データベースに関する処理は「dbprocess.php」ファイルを取り込んで行うようにする。
  • dbprocess.phpファイルを取り込む場合は、「../ch12/dbprocess.php」と指定する。
  • SQL文を発行する場合は、dbprocess.phpファイルに定義されている「executeQuery関数」を利用する。
  • 商品一覧のリンク先は、「../ch12/selectAll.php」と指定する。
実行結果

※実行結果は12.5.1と同じになります。

問6 問5で作成したプログラムを、以下の実行結果になるように重複チェック処理を追加したプログラムを新規に作成しなさい。

実行結果

※正常な処理の場合は問5と同じになります。

ソースコード

ソース・フォルダー: myproj_basic/ch12exercise
パッケージ: practiceForm1202.php
アクセスURL:http://localhost/myproj_basic/ch12exercise/practiceForm1202.php

修正内容

■practiceForm1201.phpからの変更点
  • ファイル名は「practiceForm1202.php」にする。
  • <form>タグのaction先は「practice1202.php」と指定する。
ソースコード

ソース・フォルダー: myproj_basic/ch12exercise
パッケージ: practice1202.php
アクセスURL:practiceForm1202.phpからの画面遷移でアクセスされる

修正内容

■practice1201.phpからの変更点
  • ファイル名は「practice1202.php」にする。
  • INSERT文のSQL文を発行する前に、画面からの入力IDが既に登録されていないか検索を行う。
  • 検索処理の結果、入力IDのデータがなければINSERT文のSQL文をデータベースに発行する。
  • 検索処理の結果、入力IDのデータがあれば変数$errMsgにエラーメッセージを設定する。
  • 検索処理の結果セットは利用が終わったら開放する。
  • 実行結果の画面は、変数$errMsgの値で動的に変化させる。
  • 変数$errMsgが空の場合は、登録内容の情報を表示する。(問5の実行結果と同じ)
  • 変数$errMsgが空でない場合は、変数$errMsgの内容を画面に表示する。

NEXT>> 12.10 練習問題 解答