현재 위치: > 최신 기사 목록> mysqli_result를 사용할 때 쿼리 결과가 비어 있고 올바르게 처리되는 것을 어떻게 결정합니까?

mysqli_result를 사용할 때 쿼리 결과가 비어 있고 올바르게 처리되는 것을 어떻게 결정합니까?

M66 2025-06-15

MySQL 확장은 PHP를 사용하여 MySQL 데이터베이스를 조작 할 때 일반적인 선택입니다. 쿼리를 실행 한 후에는 일반적으로 MySQLI_RESULT 객체를 얻지 만 많은 개발자가 중요한 링크를 무시합니다. 쿼리 결과가 비어 있는지 판단합니다. 이 기사는 쿼리 결과가 비어있는 상황을 판단하고 올바르게 처리하는 방법을 자세히 설명합니다.

1. 기본 쿼리 예제

먼저 간단한 쿼리 예를 살펴 보겠습니다.

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_errno) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM users WHERE status = 'active'";
$result = $mysqli->query($sql);

if (!$result) {
    die("쿼리가 실패했습니다: " . $mysqli->error);
}

// 여기 핵심 부분이 있습니다:결과가 있는지 확인하십시오
if ($result->num_rows === 0) {
    echo "기준을 충족하는 사용자는 발견되지 않았습니다。";
} else {
    while ($row = $result->fetch_assoc()) {
        echo "사용자 이름: " . htmlspecialchars($row['username']) . "<br>";
    }
}

$result->free();
$mysqli->close();
?>

2. 키 포인트 설명

1 ??? $ resultfalse 인지 확인하십시오
이는 구문 오류 또는 테이블과 같은 SQL 쿼리 문 자체에서 오류가 발생했음을 나타냅니다. 사용:

 if (!$result) {
    // 쿼리가 실패했습니다,처리 오류
}

2 ?? $ result-> num_rows를 확인하십시오
쿼리가 성공하지만 일치하는 행이 일치하지 않으면 Num_rows0 입니다. 사용:

 if ($result->num_rows === 0) {
    // 쿼리가 비어 있습니다,결과를 처리하지 마십시오
}

3 ???? 빈 결과를 결정하기 위해 fetch_assoc ()를 직접 사용하지 마십시오 <br> 많은 사람들이 직접 사용합니다.

 if ($row = $result->fetch_assoc()) { ... }

이 방법은 결과없이 루프에 들어 가지 않지만 "빈 결과"인지 또는 "행이 있지만 조건이 충족되지 않는지"여부를 명시 적으로 구별하는 것은 불가능합니다. Num_rows를 명시 적으로 확인하는 것이 좋습니다.

3. 결과없는 상황을 우아하게 처리하는 방법

실제 프로젝트에서는 "결과 없음"을 직접 출력하는 것만으로는 충분하지 않습니다. 다음과 같은 시나리오에 따라 최적화 할 수 있습니다.

  • 친절한 프롬프트 페이지로 돌아갑니다.

  • 분석 후 로그를 기록합니다.

  • 다음과 같은 다른 페이지로 이동하십시오.

 if ($result->num_rows === 0) {
    header("Location: https://m66.net/no-results.html");
    exit;
}