> 데이터 베이스 > MySQL 튜토리얼 > PHP의 다른 클래스에서 MySQLi 데이터베이스 연결에 올바르게 액세스하는 방법은 무엇입니까?

PHP의 다른 클래스에서 MySQLi 데이터베이스 연결에 올바르게 액세스하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-08 15:12:11
원래의
1017명이 탐색했습니다.

How to Properly Access a MySQLi Database Connection from Different Classes in PHP?

PHP의 다른 클래스에서 MySQLi 사용: 자세한 분석

이 쿼리에서 사용자는 PHP에서 전환한 후 MySQL을 MySQLi로 업그레이드했습니다. 5.6에서 7.0. "다른 클래스에서 MySQLi 사용하기" 가이드를 따른 후, 다른 클래스에서 데이터베이스 연결에 접근하려고 할 때 내부 서버 오류 500이 발생했습니다.

오류를 이해하기 위해 사용자의 PHP 코드를 살펴보겠습니다. 여기에는 MySQLi 연결을 설정하기 위한 데이터베이스 클래스, 이 연결에 액세스하려고 시도하는 MyAPI 클래스, 실제 데이터베이스 쿼리를 수행하는 별도의 함수라는 세 가지 클래스가 있습니다.

오류 분석

이 문제는 코드의 몇 가지 근본적인 문제로 인해 발생합니다.

  1. 잘못된 클래스 Hierarchy: Database 클래스에서 User 클래스를 확장하는 것은 잘못된 접근 방식입니다.
  2. Redundant Database Class: Database 클래스는 본질적으로 실용적인 목적을 제공하지 않으며 작업을 불필요하게 복잡하게 만듭니다. code.

솔루션

이러한 문제를 해결하려면 다음 단계를 수행하는 것이 좋습니다.

  1. 데이터베이스 제거 클래스: 중요한 기능을 제공하지 않으므로 Database 클래스는 다음과 같아야 합니다. 제거되었습니다.
  2. 단일 $db 인스턴스 생성: 바닐라 MySQLi를 사용하여 $db의 단일 인스턴스를 설정합니다.
  3. $db를 생성자 매개변수로 전달: 데이터베이스 연결이 필요한 모든 클래스에서 $db 인스턴스를 생성자로 전달합니다.

향상된 PHP 코드는 다음과 같습니다. 예:

database.php

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli("localhost", "DBUserName", "UserPassword", "SelectedDB");
$db->set_charset('utf8mb4');
로그인 후 복사

myapi.php

<?php
class MyAPI
{
    protected $db;

    public function __construct($db, $request_uri, $postData, $origin)
    {
        $this->db = $db;
    }

    public function getUser($id)
    {
        $sql = "SELECT * FROM users where>
로그인 후 복사

app.php

<?php
# require_once 'Database.php';
# require_once 'myapi.php';
require 'vendor/autoload.php'; // autoloading is a must

$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser($_POST['id']);
로그인 후 복사

이걸로 수정을 통해 사용자는 적절한 MySQLi 연결을 설정하고 다양한 클래스에서 데이터베이스 쿼리를 수행할 수 있어야 합니다.

위 내용은 PHP의 다른 클래스에서 MySQLi 데이터베이스 연결에 올바르게 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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