*

フォームからの検索

公開日: : 最終更新日:2015/12/28 php ,

前回は、データを抽出する際の条件づけの内容を予めコード内部に
書きました。ですが、ブラウザを使いユーザーが自由に条件を指定
できればもっと便利かと思います。今回は、

ユーザーが検索データを指定

するものを作成します。

SQLインジェクション

例えば、ユーザーが検索データを入力する際には注意が必要です。
次のような文で検索する場合を考えます。

SELECT * FROM product WHERE price=***

「***」はフォームの値です。
このよきユーザーが以下のようなSQL文を含む分を入力してしまうと
データベース中のデータが削除されてしまいます。

SELECT * FROM product WHERE price=***

300; DELETE FROM product;

上記のように不正なSQL文を入力されることにより
データベースが不正に操作されることを
SQLインジェクションといいます。

プリペアアドステートメントの仕組み

上記の問題を防ぐのに、SQL文でプリペアアドステートメント
(prepared statement プリペアド文)とすることが普通です。
この文は検索に使うSQL文の構造を、予め確定させておくものです。
SQL文の構造が確定されているので、実行時にユーザーによって
不正なSQL文が入力されても、その文が実行されるのを防ぎます。

1.プリペアドステートメントを作成
プリペアドステートメントは、SQL文中に検索条件をプレースホルダーと
呼ばれる仕組みとして作成します。

2.変数をバインドする
次にこのプレースホルダーとフォームの値が記憶される変数と
関連付ける(バインドする)こと。

3.実行する
プリペアドステートメントを実行する際に、
プレースホルダーが入力されてあ値に
書き換えられるようになっています。

SELECT * FROM product WHERE price = :プレースホルダ;

$que = “SELECT * product WHERE price = :pr;

//1.プリペアドステートメント作成
$stmt = $db->prepare($que)

//2.変数をバインドする
$stmt->bindParam(:pr,$pr);

//3.実行する
$stmt->execute();

サンプルコードの実行結果はこちら

ユーザーは、フォームのテキストボックスに検索するキーワードを
入力し、検索ボタンを押します。このキーワードーは
$_POST[“word”]に格納されます。

コード中では、この値を使いLKEを使ったプリペアドステートメントを
組み立てています。なので、ユーザーが指定したキーワードーを含んだ
データが取り出されます。フォームを利用することで、
ユーザーがデータを検索することができます。

スポンサードリンク

関連記事

catePhp

グローバル変数の適用範囲を変える

globalを使う グローバル変数の適用範囲を変更し、関数内部でもりようできるように することが

記事を読む

catePhp

セッションを複数ページで共有してみる

一人のユーザーが複数のウェブページからできているサイトを 利用することがあります。その場合、セッシ

記事を読む

catePhp

do~while文

前回は、while文を書きました。 今回は、do~while文を取り上げます。 この構文は、最後

記事を読む

catePhp

日時を調べる

前回の記事でdate()関数を使い表示処理を行いました。 現在の日時を調べてコード中の変数で利用す

記事を読む

catePhp

引数

前回、関数について書きましたが、関数には 便利な機能があります。関数を呼びだすときに、 呼び

記事を読む

catePhp

セキュリティ

ウェブアプリケーションは、セキュリティに注意しないといけません。 例えば、前回作成したメールのフォ

記事を読む

catePhp

メールを送信してみる

メールを送信するためのフォームを作成してみます。 メールを送信するには、事前にPHPの設定ファイル

記事を読む

catePhp

記憶寿命

変数の記憶寿命 変数や配列はプログラムが開始してから終了するまで、 値を記憶しているわけではない

記事を読む

catePhp

ラジオボタンを使ってみる

タイトルの通りラジオボタンを使います。 ラジオボタン使うと、複数項目から1つだけ項目を選択できます

記事を読む

catePhp

while文

PHPのfor文と同じように指定した文を繰り返すことができる構文があります。 while文(whi

記事を読む

スポンサードリンク

Message

メールアドレスが公開されることはありません。

CAPTCHA


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">



スポンサードリンク

jQueryMobile
トグルスイッチを設定する

トグルスイッチ(toggle switch)とは、〇型のつまみを左右に

jQueryMobile
項目選択の複数ウィジェットをグループ化する

年月日など、複数のリストから同時に選択したいとき、ウィジェットのグルー

jQueryMobile
<select>により項目選択

ボタンによる選択では、1つの項目だけ選択するか、複数を同時に選択するか

jQueryMobile
値を選択するボタンを表示する

値を選択するボタンは以下の2つがあります。 ・複数の値から1つだ

jQueryMobile
ボタンを設定する

前回の記事では<a data-role="button">

→もっと見る

  • スポンサーリンク

PAGE TOP ↑