MySQL 확장은 PHP를 사용하여 MySQL 데이터베이스를 조작 할 때 일반적인 선택입니다. 쿼리를 실행 한 후에는 일반적으로 MySQLI_RESULT 객체를 얻지 만 많은 개발자가 중요한 링크를 무시합니다. 쿼리 결과가 비어 있는지 판단합니다. 이 기사는 쿼리 결과가 비어있는 상황을 판단하고 올바르게 처리하는 방법을 자세히 설명합니다.
먼저 간단한 쿼리 예를 살펴 보겠습니다.
<?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();
?>
1 ??? $ result 가 false 인지 확인하십시오
이는 구문 오류 또는 테이블과 같은 SQL 쿼리 문 자체에서 오류가 발생했음을 나타냅니다. 사용:
if (!$result) {
// 쿼리가 실패했습니다,처리 오류
}
2 ?? $ result-> num_rows를 확인하십시오
쿼리가 성공하지만 일치하는 행이 일치하지 않으면 Num_rows 는 0 입니다. 사용:
if ($result->num_rows === 0) {
// 쿼리가 비어 있습니다,결과를 처리하지 마십시오
}
3 ???? 빈 결과를 결정하기 위해 fetch_assoc ()를 직접 사용하지 마십시오 <br> 많은 사람들이 직접 사용합니다.
if ($row = $result->fetch_assoc()) { ... }
이 방법은 결과없이 루프에 들어 가지 않지만 "빈 결과"인지 또는 "행이 있지만 조건이 충족되지 않는지"여부를 명시 적으로 구별하는 것은 불가능합니다. Num_rows를 명시 적으로 확인하는 것이 좋습니다.
실제 프로젝트에서는 "결과 없음"을 직접 출력하는 것만으로는 충분하지 않습니다. 다음과 같은 시나리오에 따라 최적화 할 수 있습니다.
친절한 프롬프트 페이지로 돌아갑니다.
분석 후 로그를 기록합니다.
다음과 같은 다른 페이지로 이동하십시오.
if ($result->num_rows === 0) {
header("Location: https://m66.net/no-results.html");
exit;
}