>

PHP에서 PDO를 사용하고 있습니다. $id = "2abcd"(문자열 접미사가있는 숫자)를 전달할 때마다 쿼리가 성공적으로 반환됩니다. ($id = 2의 데이터 포함)

데이터베이스 : id INT (11), img VARCHAR (100), uname VARCHAR (100)

public static function getImagePath($id) {
    $sql_fetch_opp = "select img from my_user where id=:id";
        $db = DAO::connect();
    try {
        $stmt = $db->prepare($sql_fetch_opp);
        $stmt->bindParam(':id', $id);
        $stmt->execute();
        $imgPath = $stmt->fetch(PDO::FETCH_COLUMN);
        return $imgPath;
    } catch (PDOException $e) {
        Err::log($e);
        throw new MyException(Err::PDO_EXCPTION);
    }
}


  • 답변 # 1

    제공된 값이 정수로 캐스트 된 후 값과 같은지 확인하면됩니다. 그렇지 않은 경우 예외를 처리하십시오.

    public static function getImagePath($id) {
        $sql_fetch_opp = "select img from my_user where id=:id";
            $db = DAO::connect();
        try {
            if((string)$id !== (string)(int)$id)
            {
                throw new PDOException("Invalid id provided");
            }
            $stmt = $db->prepare($sql_fetch_opp);
            $stmt->bindParam(':id', $id);
            $stmt->execute();
            $imgPath = $stmt->fetch(PDO::FETCH_COLUMN);
            return $imgPath;
        } catch (PDOException $e) {
            Err::log($e);
            throw new MyException(Err::PDO_EXCPTION);
        }
    }
    
    

  • 답변 # 2

    이 작동했습니다

    $stmt->bindParam(':id', $id, PDO::PARAM_INT);
    
    

관련 자료

  • 이전 regex - R에서 "|"문자가있는 gsub
  • 다음 Neo4j에서 실행하지 않고 유효한 Cypher 쿼리