$ _GET没有传递给SELECT查询

时间:2013-01-03 16:31:18

标签: php mysql select pdo get

我的页面上有超级链接,如下所示:

preview

单击A0000000时,它会将您重定向到localhost / student.php?anum = A00000000

我已检查是否使用

传递实际号码
$get = $_GET['anum'];
echo $get;

这是我得到的:Preview

之前我已经多次这样做但是改变的一件事是现在我使用内连接和WHERE子句进行特定搜索。此搜索必须做的是:

  1. 列出一个名为NOT NULL的学生
  2. 凡完成= 1
  3. 使用$ _GET ['anum']
  4. 将anum或学生ID号码输入到url anum的位置

    这是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.所以查询没有通过。

2 个答案:

答案 0 :(得分:10)

$anum = filter_var($anum, FILTER_SANITIZE_NUMBER_INT);

正在删除字母'A'

根据documentation

  

FILTER_SANITIZE_NUMBER_INT - 删除除数字,加号和减号以外的所有字符。

答案 1 :(得分:-3)

$ anum = filter_var($ anum,FILTER_SANITIZE_NUMBER_INT);

你似乎在过滤一个整数,这意味着A0000000将变为0,同样最好在变量上使用mysql_real_escape_string来防止sql注入