我的页面上有超级链接,如下所示:
单击A0000000时,它会将您重定向到localhost / student.php?anum = A00000000
我已检查是否使用
传递实际号码$get = $_GET['anum'];
echo $get;
这是我得到的:
之前我已经多次这样做但是改变的一件事是现在我使用内连接和WHERE子句进行特定搜索。此搜索必须做的是:
这是select语句:
$anum = filter_input(INPUT_GET, 'anum', FILTER_SANITIZE_STRING);
$anum = filter_var($anum, FILTER_SANITIZE_NUMBER_INT);
try
{
$query = $dbh->prepare("SELECT * FROM inoffice INNER JOIN comments ON
inoffice.id = comments.id WHERE counselorname
IS NOT NULL AND finished = '1' AND anum = :anum ");
$query->bindParam(':anum', $anum);
$query->execute();
$result = $query->fetchall();
}
catch (PDOException $e) {
error_log($e->getMessage());
die($e->getMessage());
}
我只是通过放置anum = A0000000尝试相同的查询,它完美无缺。
但是当我尝试上面的代码时,我得到一个空的echo'd表。
任何帮助都会很棒! - ty
编辑1:谢谢你神秘地删除过滤器代码的消毒部分,什么不是,并且一切正常。那就是从实际的数字部分中删除A.所以查询没有通过。
答案 0 :(得分:10)
$anum = filter_var($anum, FILTER_SANITIZE_NUMBER_INT);
正在删除字母'A'
FILTER_SANITIZE_NUMBER_INT - 删除除数字,加号和减号以外的所有字符。
答案 1 :(得分:-3)
$ anum = filter_var($ anum,FILTER_SANITIZE_NUMBER_INT);
你似乎在过滤一个整数,这意味着A0000000将变为0,同样最好在变量上使用mysql_real_escape_string来防止sql注入