2012-03-08 18 views
0

我的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

您有什么线做的非常糟糕的事情到您的数据库现在??? – 2012-03-08 04:23:09

+0

你是什么意思“手动输入2011”? – 2012-03-08 04:24:50

+0

@Jeff:我暂时删除了您网站的链接。现在的代码只是要求一些混蛋来破坏你的一天,最好不要宣传它在哪里:P – rwilliams 2012-03-08 04:40:58

回答

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字符串的任何东西。从理论上说有人可以用适当的制作$inputyr

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

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

我们不能强调逃脱。一些替代方法可以进行转义:intval()用于整数,PDO和预处理语句完全跳过数据库转义。 – 2012-03-08 04:41:51

相关问题