>  기사  >  백엔드 개발  >  PHP의 별도 클래스에서 MySQLi 연결에 액세스할 때 \"500 내부 서버 오류\"가 발생하는 이유는 무엇입니까?

PHP의 별도 클래스에서 MySQLi 연결에 액세스할 때 \"500 내부 서버 오류\"가 발생하는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-26 05:48:02347검색

Why Am I Getting a

PHP의 별도 클래스에서 MySQLi에 액세스하는 방법

별도의 클래스에서 데이터베이스 연결을 설정하려고 할 때 오류가 발생했습니다. MySQLi를 사용하여 PHP에서. 연결 개체에 액세스하려고 하면 "내부 서버 오류 500" 오류가 발생하며 이는 코드나 구성에 문제가 있음을 나타냅니다.

이 문제를 해결하려면 코드를 분석하고 핵심 사항을 파악해 보겠습니다.

데이터베이스 클래스:

데이터베이스 클래스에는 서버 이름, 사용자 이름, 비밀번호, 데이터베이스 이름 등 데이터베이스에 연결하는 데 필요한 정보가 포함되어 있습니다.

API 클래스:

API 클래스 내에서 new Database()를 사용하여 $db 속성을 초기화합니다. 이는 데이터베이스 클래스의 __construct 메소드 내에서 생성된 연결과 다른 새로운 데이터베이스 연결 개체를 설정합니다.

함수 호출:

그런 다음 다음을 시도하고 있습니다. MyAPI 클래스 내에서 정의되지 않은 $this->db->conn 개체를 사용하여 쿼리를 실행합니다. 이는 $conn 속성이 데이터베이스 클래스 내에서만 정의되기 때문입니다.

해결책:

MyAPI 클래스 내에서 데이터베이스 연결 개체에 액세스하려면 다음을 통과해야 합니다. 데이터베이스의 새 인스턴스를 생성할 때 생성자 인수로 사용됩니다.

수정된 코드는 다음과 같습니다.

Database.php:

<code class="php">class Database
{
    private $conn;

    public function __construct()
    {
        $this->conn = new mysqli(...connection details...);
    }

    public function getConn()
    {
        return $this->conn;
    }
}</code>

MyAPI.php:

<code class="php">class MyAPI
{
    private $db;

    public function __construct($db)
    {
        $this->db = $db;
    }

    public function getUser($id)
    {
        $sql = ...query...;
        $result = mysqli_query($this->db->getConn(), $sql);
        return mysqli_fetch_assoc($result);
    }
}</code>

app.php:

<code class="php">$db = new Database();
$api = new MyAPI($db);
$user = $api->getUser($_POST['id']);</code>

이 접근 방식을 사용하면 MyAPI 내에서 데이터베이스 연결 개체에 액세스할 수 있습니다. 클래스를 사용하면 쿼리를 실행하고 데이터를 성공적으로 검색할 수 있습니다.

위 내용은 PHP의 별도 클래스에서 MySQLi 연결에 액세스할 때 \"500 내부 서버 오류\"가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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