PDO bindParam返回错误参数

时间:2018-06-02 20:26:57

标签: php pdo slim

public function getStudent($id){
    $sth = $this->con->prepare("SELECT * FROM students WHERE id=:id");
    $sth->bindParam("id", $id, PDO::PARAM_INT);
    $sth->execute();
    $student = $sth->fetchObject();
    return $student;
}

(1)http://localhost/slim-framework/public/api/v1/student/1

(2)http://localhost/slim-framework/public/api/v1/student/1fgff

使用上面的代码'GET'请求,上面的URL 1和2给了我相同的结果,假设不是。

请帮助我如何使URL 2标记错误,因为它不是整数?

2 个答案:

答案 0 :(得分:0)

嗨,我希望这会对你有所帮助

在你的情况下,它将是

public function getStudent(int $id){
 .......
}

如果id是别的而不是int,你将得到php错误

http://php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration

答案 1 :(得分:0)

public function getStudent($id){
    if(is_numeric($id)) {
        $sth = $this->con->prepare("SELECT * FROM students WHERE id=:id");
        $sth->bindParam("id", $id);
        $sth->execute();
        $sth->fetchObject();
        return true;
    }else {
        return false;
    }
}

我现在通过使用is_numeric()方法跟踪@u_mulder和@Federkun建议来检查id是否为整数。

感谢大家的努力。