> 데이터 베이스 > MySQL 튜토리얼 > PHP에서 \'Bool 유형 값의 배열 오프셋에 액세스하려고 합니다\' 오류가 발생하는 이유는 무엇입니까?

PHP에서 \'Bool 유형 값의 배열 오프셋에 액세스하려고 합니다\' 오류가 발생하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-18 04:17:03
원래의
375명이 탐색했습니다.

Why Am I Getting a

PHP의 "Bool 유형 값에서 배열 오프셋에 액세스하는 중" 오류

"Bool 유형의 값에서 배열 오프셋에 액세스하는 중" 오류 type bool"은 존재하지 않거나 잘못된 유형의 배열 요소에 액세스하려고 할 때 발생합니다. 부울.

제공된 코드 조각에서는 사용자 이름이나 이메일이 이미 데이터베이스에 있는지 확인하는 쿼리를 실행하고 있습니다. 쿼리가 결과를 반환하지 않으면 해당 변수($emailRes 또는 $nameRes)에 false가 할당됩니다.

그런 다음 $nameRes 또는 $emailRes의 사용자 이름 또는 이메일 키에 액세스하려고 하면 둘 다 부울이기 때문에 오류가 발생합니다. 배열.

해결책:

1. 존재 여부 확인:

배열 오프셋에 액세스하기 전에 데이터베이스가 결과를 반환했는지 확인하세요.

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
if ($emailRes) {
    // Proceed to use $emailRes['Email']
}
로그인 후 복사

2. 기본값 할당:

데이터베이스가 무엇을 반환했는지 상관하지 않는 경우 기본값을 할당할 수 있습니다.

$emailRes = $query->fetch(PDO::FETCH_ASSOC);
$email = $emailRes['Email'] ?? ''; // Default to empty string
로그인 후 복사

3. 존재 확인을 위해 PDO의 fetchColumn() 사용:

데이터베이스에서 존재 여부를 확인하는 더 효율적인 방법은 fetchColumn():

if ($query->fetchColumn()) {
    // Record exists
}
else {
    // Record does not exist
}
로그인 후 복사

4을 사용하는 것입니다. 단일 쿼리 접근 방식:

또한 하나의 쿼리에서 사용자 이름과 이메일이 모두 있는지 확인할 수도 있습니다.

$query = $pdo->prepare("SELECT COUNT(*) FROM Users WHERE Username =:Username OR Email =:Email");
$query->execute([':Username' => $name, ':Email' => $email]);
if ($query->fetchColumn()) {
    // Username or email already exist
}
else {
    // Username and email are both available
}
로그인 후 복사

위 내용은 PHP에서 \'Bool 유형 값의 배열 오프셋에 액세스하려고 합니다\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿