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^)/
この記事に対するトラックバック
この記事のトラックバックURL
キケンなSQLインジェクション
更新情報
yappoさん、nipotanさん、麻理さんを追加しました!ありがとうございます!!
日本のGeeksがマジ優しすぎて鼻から牛乳><
geek DataBase - ギークデータベース
SQLインジェクション攻撃による不正なデータ
- From: ギークなお姉さんは好きですか |
- 2008/07/06(日) 07:42:42
この記事にコメントする
- HOME |




この記事に対するコメント
秘密のコメント
ブログ管理人への秘密コメントです
秘密のコメント
ブログ管理人への秘密コメントです