PDO bindParam возвращает тот же результат с неверным параметром - PullRequest
0 голосов
/ 02 июня 2018
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 голосов
/ 03 июня 2018
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;
    }
}

Я получил это сейчас, следуя советам @u_mulder и @Federkun, используя метод is_numeric (), чтобы проверить, является ли id целым числом или нет.

Спасибо всем за ваши усилия.

0 голосов
/ 02 июня 2018

Привет, я надеюсь, что это поможет вам

В вашем случае это будет

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

Если вместо идентификатора приходит id, вы получите php error

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

...