電子書籍の厳選無料作品が豊富!

分からないことがありましたのでご質問をさせて頂きます。
現在作成してる仕様なのですが、
フォームの一つの項目のリンクを設置し、別のページに渡し
そこで更に詳細な情報をMYSQLからひっぱってきて表示させようとしております。
そこでGETメソッドを使って行おうとしているのですが、どうしても
変数の受け渡しがうまくいきません。
こちらがそのコードになります。

1,フォーム
<td><a href="shousai.php?code=<?php echo $row['id'];?>">詳しくはこちら</a></td>

2,詳細ページ(shousai.php)
<?php
echo var_dump($_GET["id"]);
$id = $_GET["id"];

$con = mysql_connect('localhost','aaaa','aaa');
if (!$con)
{
print("MySQLへの接続に失敗しました");
exit;
}

if (!mysql_select_db("database"))
{
print("データベースへの接続に失敗しました");
exit;
}


$sql="select * from table where id ='$id'";
$result=mysql_query($sql,$con); //SQL文の発
$rows=mysql_num_rows($result);
while($row = mysql_fetch_array($result)){

?>
<table border ="1">
<tr><td><?php echo $row["name"]; ?></p></td></tr>

<tr><td><?php echo $row["address"]; ?></td></tr>

<tr><td><?php echo $row["station"]; ?></td></tr>
<?php } ?>

</table>
2の詳細ページにてvar_dumpで$_GET["id"];の値を受け取ってるか
確かめたのですがNULLになっており、ページになにも反映されません。
フォームからリンクで値を送り、それをきっかけにデータベースに接続して詳細を表示させたいと思っております。
どなたかご存知の方お伺いできませんでしょうか?

A 回答 (2件)

#1です


回答とは直接関係ありませんが、GET変数でそのままSQLを発行するのはとても危険です。
SQLインジェクション
http://www.google.co.jp/search?q=SQL%E3%82%A4%E3 …
バリデーションを行なった方が良いです。
例えば$_GET["id"]は数字なら、
if(ereg("^[0-9]+$",$_GET["id"])){
$id=$_GET["id"];
}else{
echo "送信されたIDは不正です";exit;
}
文字列ならエスケープも有効です。
$id=mysql_real_escape_string($_GET["id"]);


参考まで。

この回答への補足

taketan_mydns_jp様
大変貴重なアドバイスどうもありがとうございます。
一点お伺いしたいのですが、実際
$_GET["id"] は、$_GET["code"]の間違いでありました。
そこで今頂きましたコードですが
こちらは受取り側、今回ですとshousai.phpの所に
$id = $_GET["code"];
ではなく

if(ereg("^[0-9]+$",$_GET["CODE"])){
$id=$_GET["id"];
}else{
echo "送信されたIDは不正です";exit;
}
にすれば宜しいのでしょうか??

補足日時:2007/06/26 18:53
    • good
    • 0
この回答へのお礼

taketan_mydns_jp様

先ほど補足にて簡単に質問をしてしまい、申し訳ございませんでした。
コードをよく見たらすぐに分かることでした。
気持ちが先走ってしまいました。
ご丁寧に教えて頂き、大変感謝しております。

どうもありがとうございました!!

お礼日時:2007/06/26 19:09

> shousai.php?code=


$_GET["id"] は、$_GET["code"]の間違いでは無いですか?
    • good
    • 0
この回答へのお礼

さっそくのご返答ありがとうございます!
まさに言われた通りでした。
どうもありがとうございます!

お礼日時:2007/06/26 18:46

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