いちばん失敗した人決定戦

●質問の主旨


kensaku.htmlから数字(データベースのコード番号)を入力・検索して、
PHPMyAdminにあるデータベースから、特定のレコードを取り出したいのですが、
データベースにあるすべてのデータが返されます。

検索窓に入力した特定のレコードの内容だけを
返すためには、下記のichiran.phpをどのように直せばよいでしょうか?


●プログラムの流れ


1.kensaku.htmlの検索窓に番号を入力・送信

2.PHPMyAdminにあるデータベース(aketo)にアクセス

3.ichiran.phpで検索結果を表示


●プログラムコード


(kensaku.html)


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHPの基礎</title>
</head>
<body>
<form method="post" action="kensaku.php">
ご意見コードを入力してください。<br/>
<input name="code" type="text" style="width:100px"><br/>
<br/>
<input type="submit" value="送信"><br/>
</body>
</html>


(ichiran.php)


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>PHPの基礎</title>
</head>
<body>

<?php

$code=$_POST['code'];

$dsn = 'mysql:dbname=phpkiso2;host=localhost';
$user = 'root';
$password = '';
$dbh = new PDO($dsn,$user,$password);
$dbh->query('SET NAMES UTF-8');

$sql = 'SELECT * FROM anketo WHERE code='.$code;
$stmt = $dbh->prepare($sql);
$stmt->execute();

$stmt->execute();

while(1) {

$rec = $stmt->fetch(PDO::FETCH_ASSOC);
if($rec == false) {
break;
}
print$rec['code'];
print$rec['nickname'];
print$rec['email'];
print$rec['goiken'];
print'<br/>';
}
$dbh = null;

?>
</body>
</html>


●開発環境


windows8
xammp1.8.1
MySQL(PHPMyAdmin)

「特定のレコードだけを表示させるためのコー」の質問画像

A 回答 (1件)

>$sql = 'SELECT * FROM anketo WHERE code='.$code;



ダイレクトに$codeをクエリに書きこんでしまってはプリペアド処理になってない
何を参考にしているかわからないけど、その参考文献をもう一度よく
読みなおした方がよいと思います
    • good
    • 0
この回答へのお礼

yambejp様
ご回答ありがとうございます。

>プリペアド処理
プリペアードステートメント処理のことですね。
参考文献の先の箇所(P142)を読んでいたら、
出てきました。もう一度じっくり読んでみます。


いきなりはじめるPHP~ワクワク・ドキドキの入門教室
http://www.amazon.co.jp/%E3%81%84%E3%81%8D%E3%81 …

お礼日時:2013/03/29 00:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!