*

フォームからの検索

公開日: : 最終更新日: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

文のネスト

前回までの記事で、if文、for文、while文などを書いてきました。 これらの構文は、複数の文に

記事を読む

catePhp

関数に複数の引数を付けてみる

これまでに定義した関数の引数は1つだけでした。 関数には2つ以上の引数を持たせることもできます、

記事を読む

catePhp

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

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

記事を読む

catePhp

クラスの活用

オブジェクトを作成したときに、はじめに色々な処理を 行いことがあります。オブジェクト生成時に初期値

記事を読む

catePhp

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

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

記事を読む

catePhp

値を順に並べる

取り出したデータを並び替える方法を書いていきます。 ORDER BY 列名 で並び替える

記事を読む

catePhp

日時を調べる

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

記事を読む

catePhp

PHPデバック時に使えそうな小ネタ

タイトルの通り、プログラムを書いて実行したんだけど 動画がおかしいとき(デバッグ時)に役に立つかも

記事を読む

catePhp

メールを送信してみる

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

記事を読む

catePhp

php数値を格納してみる

前回の記事では変数に文字列を格納しましたが、今回は数値を格納します。 サンプルコードの実行結果

記事を読む

スポンサードリンク

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 ↑