GETメソッドでデータを受け取る

  • 2008/06/23(月) 23:00:00

更新情報

竹迫さん、phaさん、ひろゆきさん、いとまささんを追加しました!ありがとうございます!!
日本のGeeksは本当に優しい。泣けてくるぜよ><
geek DataBase - ギークデータベース


$_GETの値をキーに、データベースからデータを読み取る

以下、個別ページのPHPソース
※解説は 『MySQL入門以前』 を参考に書いています。


1 <?php
2   extract($_GET);
3    mysql_connect('localhost','ユーザ名','パスワード');
4    mysql_select_db('データベース名');
5    mysql_query("set names utf-8");
6
7   $sql="select * from geekDB where id = " . $id;
8   $result = mysql_query($sql);
9
10 // id=数字以外はエラーメッセージを表示
11    if(!is_numeric($id)){
12     echo "該当データがありません";
13     }
14     else{
15 // ここまで
16
17     while ($item = mysql_fetch_array($result)) {
18     echo "<h2>";
19     echo $item["name"];
20     echo "</h2>";
21 ・・・(中略)・・・
22      }
23     }
24 ?>



2行目はGETメソッドで送られてきたデータの受け取りを許す、という意味。


3〜5行目はお決まりの手順。データベース接続&文字コード指定。


7,8行目もPHPを使ってMySQLを操るとほぼ同じなんだけど、
今回は where id = " . $id というのがくっついてる。何が違うか。
ある条件に適合するデータだけを表示したい場合は、select文の末尾で条件を指定するそうな。
つまり、$id のデータだけを表示させたいと。


11〜14行目は、実は最初にUPしたときは入れてなかった。
公開後にTwitterやメール等で何人かにご指摘いただき、慌てて追加><
これがないとどうなるかというと・・・

たとえば、アドレスバーのURLに”id=A ”や”id=あ”といった数字じゃない文字を入力すると、
真っ白な画面になってしまう。なぜって、そんなデータはないから。
idのデータ型はINT。数字しか使えない。

これを回避するために、idが数字以外だったらエラーメッセージを出すことに。
試行錯誤の末、ようやく変数が数字かどうかを調べる関数を発見!

is_numeric 変数が数値か調べる

is_numeric(変数名)
戻り値:数値の場合はTRUE,数値ではない場合はFALSE

参考:『PHP辞典 第2版 (DESKTOP REFERENCE)


if〜else構文を使って「もし $id が数字じゃなかったら {中カッコ} 内の処理を実行せよ。それ以外(つまり$idが数字)だったら else 以下を実行せよ」と命令したい。
真/偽を反転させるには””を使う、と以前ナイスギークに教わった。
参考:6日目 クッキー受け取ってください!

だから、is_numeric の頭に””を付ければOK!(←これは感情を込めたエクスクラメーションマーク)


17行目もと同じ。
18行目以下はひたすら echo が続くだけなので省略。
22,23行目で {中カッコ} を閉じて終了♪



やーやー。めでたしめでたし。
このページを作れば、あとはDBにどんどんデータを追加していくだけでいいのだよ!素晴らしい!!
ビバDB!データベースばんざい\(^o^)/ ドラゴンボールばんざい\(^o^)/


LINEで送る

この記事に対するトラックバック

この記事のトラックバックURL

-

管理人の承認後に表示されます

  • From: |
  • 2013/09/13(金) 16:27:00

キケンなSQLインジェクション

e-51 更新情報 yappoさん、nipotanさん、麻理さんを追加しました!ありがとうございます!! 日本のGeeksがマジ優しすぎて鼻から牛乳>< e-117 geek DataBase - ギークデータベース e-149 SQLインジェクション攻撃による不正なデータ

この記事に対するコメント

秘密のコメント

ブログ管理人への秘密コメントです

  • 投稿者: -
  • 2008/06/24(火) 17:37:33
  • [編集]

秘密のコメント

ブログ管理人への秘密コメントです

  • 投稿者: -
  • 2008/06/24(火) 00:23:36
  • [編集]

この記事にコメントする

管理者にだけ表示を許可する