>데이터 베이스 >MySQL 튜토리얼 >PHP의 별도 클래스에서 MySQLi 연결에 올바르게 액세스하려면 어떻게 해야 합니까?

PHP의 별도 클래스에서 MySQLi 연결에 올바르게 액세스하려면 어떻게 해야 합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-10 16:22:09239검색

How Can I Properly Access a MySQLi Connection from a Separate Class in PHP?

PHP의 다른 클래스에서 MySQLi 사용

문제 설명:

질문에서 도움을 구합니다. 다른 클래스 내에서 별도의 클래스에 설정된 MySQLi 연결에 액세스할 때. 연결 속성이 있는 데이터베이스 클래스가 생성되고 API 클래스가 이 연결에 액세스하려고 시도합니다. 그러나 연결에 액세스하려고 시도하면 내부 서버 오류가 발생합니다.

정답:

잘못된 사례 및 권장 사항:

제공된 코드에는 문제를 일으키는 몇 가지 나쁜 관행이 포함되어 있습니다. 오류:

  • Database 클래스에서 클래스(User)를 확장하는 것은 부적절합니다.
  • Database 클래스에는 필수 기능이 부족합니다.

다음을 권장합니다. :

  • 데이터베이스 클래스는 의미가 없으므로 제거합니다. 목적.
  • vanilla mysqli에서 단일 $db 인스턴스를 생성합니다.
  • 이 인스턴스를 데이터베이스 연결이 필요한 클래스에 생성자 인수로 전달합니다.

리팩토링됨 코드:

database.php:

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

m yapi.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 essential

$api = new MyAPI($db, $request_uri, $postData, $origin);
$user = $api->getUser($_POST['id']);

작성자 이러한 권장 사항을 따르면 다른 클래스에서 오류 없이 효과적으로 MySQLi 연결에 액세스할 수 있습니다.

위 내용은 PHP의 별도 클래스에서 MySQLi 연결에 올바르게 액세스하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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