현재 위치: > 최신 기사 목록> IS_INTEGER 데이터베이스 쿼리의 데이터 검증

IS_INTEGER 데이터베이스 쿼리의 데이터 검증

gitbox 2025-06-06

일상 생활에서 데이터베이스 작업에 PHP를 사용하는 경우, 특히 정확한 수치 논리 또는 유형 판단이 필요한 시나리오에서 쿼리 결과 검증을 입력해야합니다. PHP는 약하게 타이핑 된 언어이지만 데이터 유형의 제어를 무시할 수 있다는 의미는 아닙니다. 이 기사는 IS_INTEGER () 함수를 사용하는 방법에 중점을 두어 데이터베이스 쿼리 결과에서 추출한 데이터가 정수 유형인지 여부를 확인하고 일반적인 함정과 올바른 사용법을 탐색합니다.

1. is_integer ()의 기본 사용

IS_INTEGER () 는 PHP의 내장 유형 감지 함수이며 변수가 정수 유형 ( int )인지 확인하는 데 사용됩니다. 구문은 매우 간단합니다.

 is_integer(mixed $value): bool

전달 된 변수가 정수 일 때 true를 반환하십시오. 그렇지 않으면 거짓 . 이 기능은 서로의 별명 인 is_int () 와 정확히 동일합니다.

예:

 $number = 10;

if (is_integer($number)) {
    echo "이것은 정수입니다";
} else {
    echo "이것은 정수가 아닙니다";
}

출력은 다음과 같습니다.

 이것은 정수입니다

2. 데이터베이스 쿼리 결과 유형

필드가 데이터베이스 (예 : MySQL)에서 int 유형으로 정의 되더라도 PHP는 PDO 또는 MySQLI를 통해 쿼리를 실행할 때 기본적으로 문자열로 결과를 문자열로 반환합니다. 이는 데이터베이스의 값이 정수이더라도 PHP에서 얻은 값은 문자열 유형 일 수 있음을 의미합니다.

예를 들어:

 // 가정 users 테이블에서 id 필드는 INT 유형
$stmt = $pdo->query("SELECT id FROM users WHERE id = 1");
$row = $stmt->fetch(PDO::FETCH_ASSOC);

var_dump($row['id']);
var_dump(is_integer($row['id']));

출력은 다음과 같습니다.

 string(1) "1"
bool(false)

이는 데이터베이스의 ID가 정수이지만 PHP는 문자열 "1"을 얻고 IS_INTEGER () 는 결과가 False 인지 결정합니다.

3. 솔루션

is_integer () 가 올바른 판단을하기 위해서는 데이터를 가져올 때 또는 이후에 유형 변환을 수행해야합니다.

방법 1 : 수동으로 캐스트 유형 변환

 $id = (int)$row['id'];

if (is_integer($id)) {
    echo "id 정수입니다";
}

이 방법은 간단하고 직관적이며 작거나 제어 가능한 데이터 볼륨이있는 시나리오에 사용하기에 적합합니다.

방법 2 : PDO를 사용하여 리턴 유형을 설정하십시오

PDO는 쿼리시 다른 데이터 유형을 반환하는 것을 지원합니다. pdo :: att_emulate_prepares => false와 함께 pdo :: fetch_num을 사용할 수 있으려면 pdo가 자동으로 유형을 자동으로 변환하도록 시도 할 수 있지만 실제 사용에서 수동 캐스팅만큼 신뢰할 수는 없습니다.

4. 해당 시나리오의 예

다음은 실제 응용 프로그램 시나리오를 기반으로 한 예입니다. 사용자가 입력 한 ID가 데이터베이스의 ID와 일치하고 모든 정수인지 확인하기위한 예입니다.

 // 사용자 입력
$userInput = $_GET['id'] ?? null;

if (!is_numeric($userInput)) {
    exit("불법적인 ID");
}

// 데이터베이스를 쿼리하십시오
$stmt = $pdo->prepare("SELECT id FROM users WHERE id = ?");
$stmt->execute([$userInput]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);

if ($row && is_integer((int)$row['id'])) {
    echo "이 정수는 데이터베이스에 존재합니다 ID";
} else {
    echo "해당 발견이 없습니다 ID 或유형错误";
}

5. 정수를 URL에서 통과하고 확인하십시오

일부 인터페이스 디자인에서는 URL에서 매개 변수를 얻고 정수 여부를 결정해야 할 수도 있습니다. 예를 들어, 사용자는 다음 URL을 통해 액세스합니다.

 https://gitbox.net/get-user.php?id=42

이러한 요청을 처리 할 때 is_integer () 와 함께 매개 변수를 확인할 수도 있습니다.

 $id = $_GET['id'] ?? null;

if (is_numeric($id) && is_integer((int)$id)) {
    $id = (int)$id;
    // 다음으로 데이터베이스 작업을 수행하십시오
} else {
    echo "불법적인参数";
}

6. 요약

IS_INTEGER ()는 데이터 유형을 확인할 때 특히 데이터가 순수한 정수인지 확인 해야하는 비즈니스 로직에서 매우 유용한 도구입니다. 그러나 PHP는 기본적으로 데이터베이스의 문자열로 숫자 필드를 리턴하므로 일반적으로 사용하기 전에 수동 유형 변환을 수행해야합니다. 실제 비즈니스 시나리오와 함께이 메커니즘을 이해하고 IS_INTEGER ()를 올바르게 사용하면 프로그램의 견고성과 데이터 정확도를 효과적으로 향상시킬 수 있습니다.