「PHPとMySQLを使いGETメソッドで受け取ったデータを取得&表示」の編集履歴(バックアップ)一覧に戻る

PHPとMySQLを使いGETメソッドで受け取ったデータを取得&表示 - (2015/06/03 (水) 22:57:53) のソース

前回記事[[PHPとMySQLでデータの取得]]からリンクで飛んできたページを作っていきたいと思います。6月4日記事

#contents
~
~
----
~
*GETメソッドの注意点
GETメソッドはqueryの内容がURLに表示されているため、適切に処理する必要があります。

*クエリ条件
idでかつ公開中(2)のデータの場合のみ表示させ、そうでない場合は、「この記事はありません。」的なエラー処理をしていきたいと思います。
すると
 mysql> SELECT * FROM information WHERE id = '受け取ったID番号' AND status = '2';
というようなクエリになると思います。

*コード
受け取った値が数値のもののみを許可する必要があります。
fillter関数を使ってもよいですし、PDOのbindParamで、数値のチェックをしてもいいと思います。
関数の勉強もかねて両方行っていきましょうか?あまり意味ないとは思いますが・・・
~
&u(){ファイル名(information.php)}
 <!DOCTYPE HTML>
 <html lang="ja">
 <head>
 <meta charset="utf-8">
 <title>更新情報</title>
 </head>
 
 <body>
 
 
 <?php
 
 $dsn = 'mysql:dbname=データベース名;host=localhost;port=3306';
 $user = 'ユーザ名';
 $password = 'ユーザパスワード';
 
 
 try{
 	//成功時対応
 	$dbh = new PDO($dsn, $user, $password);
 	$id = $_GET['id'];
 	$filter_id = filter_var($id ,FILTER_SANITIZE_NUMBER_INT,FILTER_NULL_ON_FAILURE);
 	
 	//echo $filter_id;
 	
 	$stmt = $dbh -> prepare("SELECT * FROM information WHERE id = :id AND status = '2'");
 	$stmt->bindParam(':id', $filter_id, PDO::PARAM_INT);
 	$stmt->execute();//実行
 
 	$result = $stmt->fetch();
 	echo '<dl><dt>記事ID</dt><dd>';
 	echo htmlspecialchars($result['id']).'<br>';
 	echo '</dd><dt>日付</dt><dd>';
 	echo htmlspecialchars($result['info_date']).'<br>';
 	echo '</dd><dt>投稿種類</dt><dd>';
 	switch($result['type']){
 		case 1:
 		echo 'ニュース';
 		break;
 		case 2:
 		echo '更新情報';
 		break;
 		case 3:
 		echo '入荷情報';
 		break;
 		case 4:
 		echo 'その他';
 		break;
 		default :
 		echo 'その他';
 	}
 	echo '</dd><dt>タイトル</dt><dd>';
 	echo htmlspecialchars($result['title']).'<br>';
 	echo '</dd><dt>内容</dt><dd>';
 	echo nl2br(htmlspecialchars($result['info_text'])).'<br>';
 	echo '</dd><dt>URL</dt><dd>';
 	echo htmlspecialchars($result['url']).'<br>';
 	echo '</dd></dl>';
      echo '<a href="index.php">ホームに戻る</a>';
 }catch (PDOException $e){//失敗時対応
 print('Connection failed:'.$e->getMessage());
 die();
 }
 
 $dbh = null;	
 
 ?>
 
 </body>
 </html>