2012-03-08 5 views
0

My htmlページ。 私はこの行を持っています。リンクの変数として渡す必要があるので、get文を使用して取得する必要があります。

<a href="Player_Roster.php?inputyr=2011">2011</a><br /> 

私のPHPページ。 私はこのコード行を持っています。

<?php 
$inputyr = $_GET[inputyr]; 
$query = "SELECT * FROM players 
WHERE playeryear = $inputyr; 
ORDER BY number"; 
$players = mysql_query($query); 
?> 

私はそれがページを開くリンクをクリックした後、私のPHPページは、年に2011

を使用してクエリを実行します。表示されます... しかし、プレーヤーはテーブルに記入しないでください。 2011年に手動で入力するとクエリが機能します。

+0

あなたは何行ですか? –

+0

「2011年に手動で入力する」とはどういう意味ですか? –

+0

@Jeff:当面はあなたのサイトへのリンクを削除しました。それが立っているコードは、あなたの日を壊滅させて、それがどこにあるのかを宣伝しないようにするだけです。P – rwilliams

答えて

0

$ inputyrを一重引用符で囲む必要があります。

<?php 
$inputyr = $_GET[inputyr]; 
$query = "SELECT * FROM players 
WHERE playeryear = '$inputyr' 
ORDER BY number"; 
$players = mysql_query($query); 
?> 
1

$inputyrの後にクエリに余分なセミコロンがありました。以下を試してください。

$query = "SELECT * FROM players 
    WHERE playeryear = $inputyr 
    ORDER BY number"; 

また、SQL文字列に入力するものはすべてエスケープする必要があります。理論的には、誰かがあなたのデータベースに悪いことをしている可能性があります。値

//protect against sql injection 
$inputyr = mysql_real_escape_string($inputyr) 

$query = "SELECT * FROM players 
    WHERE playeryear = $inputyr 
    ORDER BY number"; 
+1

十分にエスケープすることはできません。エスケープするいくつかの代替方法:intval()は整数、PDO、データベースのエスケープをスキップするためのプリペアドステートメント –

関連する問題