>백엔드 개발 >PHP 튜토리얼 >`mysqli_query()`가 '경고: mysqli_query()에서는 매개변수 1이 mysqli, null이 주어질 것으로 예상합니다' 오류를 반환하는 이유는 무엇입니까?

`mysqli_query()`가 '경고: mysqli_query()에서는 매개변수 1이 mysqli, null이 주어질 것으로 예상합니다' 오류를 반환하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-05 00:53:14257검색

Why does `mysqli_query()` return a

경고: mysqli_query() 매개변수 오류 이해

PHP에서 mysqli_query()를 사용할 때 첫 번째 매개변수가 데이터베이스 연결을 나타내는 유효한 mysqli 개체입니다. 그러나 "경고: mysqli_query()는 매개변수 1이 mysqli, null이 주어질 것으로 예상합니다."라는 오류가 발생하면 함수에 전달된 첫 번째 매개변수가 mysqli 객체가 아님을 나타냅니다.

코드 검토

제공된 코드에는 getPosts()라는 함수가 있습니다. 이 함수는 Blog라는 데이터베이스 테이블을 쿼리하려고 시도합니다. 그러나 getPosts() 내의 mysqli_query() 호출에서는 첫 번째 매개변수가 명시적으로 전달되지 않습니다. 결과적으로 PHP는 함수 외부에 선언된 $con의 값을 첫 번째 매개변수로 가정합니다. 그러나 $con은 getPosts() 범위에 포함되지 않으므로 null을 반환합니다.

오류 해결

이 문제를 해결하려면 다음 두 가지 옵션이 있습니다.

  1. **$con 변수 전역화:** 전역 변수를 사용하여 getPosts() 내에서 $con 변수를 전역으로 만들 수 있습니다. $콘; 선언. 이렇게 하면 PHP가 함수 외부에서 $con을 찾아서 getPosts() 내에서 액세스할 수 있게 됩니다.
  2. **$con 변수를 매개변수로 전달:** 더 나은 접근 방식은 $con 객체를 전달하는 것입니다. getPosts() 함수에 대한 매개변수로 사용됩니다. 이렇게 하면 getPosts()가 데이터베이스 연결에 직접 액세스할 수 있으므로 전역 범위가 필요하지 않습니다.

예:

function getPosts(mysqli $con) {
    // ... same code as before
}

// Connect to the database
$con = mysqli_connect("localhost", "xxxx", "xxxx", "xxxxx");
// Call getPosts() with the connection as a parameter
getPosts($con);

추가 권장 사항

또한 잠재적인 오류를 처리하는 것이 좋습니다. 데이터베이스 작업 중에 발생할 수 있는 문제입니다. 다음과 같이 오류 보고를 명시적으로 활성화할 수 있습니다.

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions

오류가 발생하면 예외가 발생하므로 코드에서 적절한 조치를 취할 수 있습니다.

위 내용은 `mysqli_query()`가 '경고: mysqli_query()에서는 매개변수 1이 mysqli, null이 주어질 것으로 예상합니다' 오류를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.