Kelas koneksi database mysqli php

Anda akan melihat Kelas PHP yang dapat di-tweak sesuai persyaratan untuk menghubungkan ke MySql Database menggunakan ekstensi MySqli PHP

Keuntungan dari kelas DatabaseConnect class

  • Dapat digunakan sebagai kelas Standalone
  • Dapat diperpanjang dengan kelas Anda
  • Objeknya dapat diteruskan sebagai parameter ke fungsi Anda, dll


<?php

class DatabaseConnect
{
    public $mysqli ;
    public $connectionConfig ;

    public function __construct($connectionConfig = null)
    {
        if ($connectionConfig == null)
         {

            // This is the default configuration for your class and you could pass custom configuration through the constructor
            // For example default configuration will be

            $this->connectionConfig = array(
                'host' => 'YOUR_HOST', // Eg: localhost
                'user' => 'USER_NAME', // Eg: root
                'password' => '',       
                'database' => 'DATABASE',
                'mysqlport' => 3306    // or any port 
            );
        }
         else 
         {
            $this->connectionConfig = $connectionConfig;
        }
    }

    // set custom configuration
    public function setConfig($connectionConfig)
    {
        $this->connectionConfig = $connectionConfig;
    }

    // get configuration
    public function getConfig()
    {
        return $this->connectionConfig;
    }

    // connects to database using $connectionConfig
    public function connect()
    {
        $this->mysqli = new mysqli(
            $this->connectionConfig['host'],
            $this->connectionConfig['user'],
            $this->connectionConfig['password'],
            $this->connectionConfig['database'],
            $this->connectionConfig['mysqlport']
        );
        if ($this->mysqli->connect_error) {
            return [
                    'connected' => false,
                    'message' => $this->mysqli->connect_error,
                ];
        } else {
            return [
                    'connected' => true,
                    'message' => 'Connected to MySql server',
                ];
        }
    }
}

Anda dapat menggunakannya sebagai skrip mandiri seperti yang ditunjukkan di bawah ini. Jika connect()["connected"] benar, maka $mysqli will have connection to the database.


$db=new DatabaseConnect();

if($db->connect()["connected"]){
    echo "CONNECTED TO DATABASE";

    // connected, now $db->mysqli has connection to the database
    // for example :
    
        $qry="SELCT * From blah blah";
        if($db->mysqli->query($qry)){
            /// You could use it like this
        }
}
else{
    echo "FAILED TO CONNECT";
    echo $db->connect()["message"];
}
                           
_

Anda bisa memperluasnya dengan kelas Anda seperti yang ditunjukkan di bawah ini


class Accounts extends DatabaseConnect{
    public function __construct(){
        parent::__construct();
        /*
        if($this->connect()["connected"]){
            // DO STUFF with $this->mysqli
        }
        */
        // passing custom config
        $this->setConfig(
            [
            'host' => 'YOUR_HOST', // Eg: localhost
            'user' => 'USER_NAME', // Eg: root
            'password' => '',       
            'database' => 'DATABASE',
            'mysqlport' => 3306    // or any port 
            ]
        );

        if($this->connect()["connected"]){
            // DO STUFF with $this->mysqli
        }

    }
}

Anda bisa meneruskannya sebagai parameter ke fungsi Anda


<?php
include('DatabaseConnect.php');
class DataHandler{
    public function getData($mysqli){
        $qry="SELECT * FROM BLAH";
        if($mysqli->query($qry)){
            // blah
        }
    }
}
$db=new DatabaseConnect();
$db->connect();
$dataHandler=new DataHandler();
$dataHandler->getData($db->mysqli);
                           

Jadi ini tentang kelas serba guna kami

Dalam tutorial PHP ini, saya akan mendemonstrasikan cara menulis kelas koneksi database MySQL yang sangat sederhana untuk terhubung ke database di situs web atau aplikasi web Anda, menggunakan fungsi mysqli (MySQL Improved Extension)

Ekstensi mysql dari PHP, yang merupakan API MySQL asli, sudah tidak digunakan lagi sejak PHP 5. 5. 0 dan itu benar-benar dihapus di PHP 7. 0. 0. Sebagai pengembang PHP & MySQL, kini Anda memiliki dua pilihan untuk membangun situs web dan aplikasi Anda; . Anda masih dapat menggunakan ekstensi mysql tetapi kecuali Anda benar-benar perlu menggunakannya, saya tidak akan merekomendasikan untuk menggunakannya karena situs web atau aplikasi Anda mungkin berhenti berfungsi jika modul PHP di server Anda diperbarui ke versi 7. 0 dalam beberapa tahun ke depan, yaitu jika Anda tidak memiliki kendali penuh atas server hosting Anda

Karena Anda membaca tutorial tentang mysqli ini, saya tidak akan membahas detail tentang ekstensi mana yang akan digunakan dan mengapa, tetapi jika Anda ingin menjelajahi lebih banyak informasi tentang memilih API MySQL untuk proyek Anda, Anda dapat memeriksa halaman ini di PHP

Mengapa Menggunakan Kelas?

Biasanya, hal pertama yang Anda perlukan agar situs web atau aplikasi Anda berkomunikasi dengan database Anda adalah menyambung ke database. Ini dapat dicapai dalam beberapa cara tergantung pada sifat dan fungsionalitas skrip Anda. Jika Anda berencana untuk menggunakan fungsi untuk melakukan tugas terkait database seperti membaca dari database dan menulis ke database, dan bahwa Anda akan sering menggunakan fungsi tersebut pada beberapa skrip, maka akan lebih baik untuk membangun kelas untuk menangani

Bergantung pada bagaimana Anda ingin kelas koneksi database Anda bekerja, itu bisa sangat kompleks atau cukup sederhana. Jika Anda seorang pemula atau mencoba mencari klarifikasi tentang menghubungkan dengan benar ke database MySQL, sebaiknya mulai dengan cara paling sederhana. Sekarang, mari kita lihat bagaimana class koneksi database dibangun

Kelas Koneksi Database mysqli

LANGKAH 1. Tentukan Kelasnya

Langkah pertama kita adalah mendefinisikan kelas koneksi database seperti berikut ini

kelas MyDB {

}

Ini adalah bagaimana kelas didefinisikan dalam PHP. Anda mulai dengan kelas kata kunci, tambahkan nama kelas Anda (MyDB) di sebelahnya dan tambahkan tanda kurung kurawal buka/tutup. Anda dapat menggunakan nama apa pun untuk kelas Anda sesuai keinginan, selama Anda tetap berada dalam aturan penamaan kelas PHP

LANGKAH 2. Tentukan Variabel Database

Langkah selanjutnya adalah mendefinisikan variabel database di kelas kita yang akan kita gunakan dalam mendefinisikan detail database kita dan menangani operasi database

kelas MyDB {
publik statis $db;
}

Kata kunci publik berarti bahwa variabel ini dapat diakses di luar kelas ini (mis. e. , fungsi dalam skrip kami). Kata kunci statis berarti bahwa kita tidak perlu membuat instance kelas dalam skrip kita untuk mengakses variabel $db

LANGKAH 3. Tentukan Detail Basis Data

Langkah selanjutnya adalah menentukan detail basis data sehingga skrip kita akan mengetahui basis data mana yang akan dihubungkan. Terserah Anda di mana Anda menyimpan detail pengguna dan kata sandi basis data Anda, mis. e. di file lain yang tidak ditempatkan di folder public_html, tetapi untuk kesederhanaan, kami akan menyimpan detail koneksi database di file yang sama sebagai berikut

kelas MyDB {
publik statis $db;
}

MyDB. $db = new mysqli('localhost', 'db_username', 'db_password', 'db_name');

Apa yang kami lakukan adalah membuat instance baru koneksi mysql (melalui kelas mysqli) menggunakan detail database kami. Parameter pertama (localhost) adalah server database tempat database Anda disimpan. Dalam kebanyakan kasus (di server lokal Anda atau di hosting bersama, dll. ) server basis data adalah localhost. Jika milik Anda berbeda, ubah saja

Tiga parameter berikutnya masing-masing adalah nama pengguna basis data, kata sandi basis data, dan nama basis data. Masukkan informasi database Anda sendiri ke tempat yang benar

Mulai saat ini, kapan pun kita akan berinteraksi dengan database dalam skrip kita, kita akan menggunakan MyDB. $db untuk menanganinya

LANGKAH 4. Periksa Kesalahan Koneksi Database

Kadang-kadang, database Anda mungkin tidak dapat diakses karena berbagai alasan seperti kegagalan server, kerusakan skrip, atau beban yang berlebihan. Dalam kasus seperti itu, daripada menampilkan halaman kosong atau menampilkan kesalahan default (yang seharusnya tidak Anda lakukan di situs web langsung untuk alasan keamanan), lebih baik beri tahu pengunjung Anda bahwa koneksi database gagal dengan kata-kata sederhana.

Kami menggunakan connect_error untuk melakukan pemeriksaan ini dan menampilkan pemberitahuan ketika terjadi kegagalan koneksi database

kelas MyDB {
publik statis $db;
}

MyDB. $db = new mysqli('localhost', 'db_username', 'db_password', 'db_name');

jika (MyDB. $db->connect_error) {
exit('Koneksi database gagal, harap coba lagi dalam beberapa detik. ');
}

Anda dapat menampilkan pesan apa pun yang Anda inginkan melalui exit() atau bahkan menampilkan halaman kesalahan khusus jika Anda mau

LANGKAH 5. Atur Set Karakter

Langkah ini opsional tetapi saran saya adalah menggunakannya kecuali Anda perlu menggunakan rangkaian karakter tertentu di situs web atau aplikasi Anda

Setiap server basis data memiliki set karakter default sendiri. Meskipun Anda dapat menentukan kumpulan karakter dari setiap kolom pada tabel database saat membuat database, mungkin ada saat-saat di mana data atau teks tidak ditampilkan seperti yang Anda maksudkan pada browser dan perangkat yang berbeda. Anda bahkan mungkin tidak pernah menyadarinya kecuali pengguna Anda melaporkannya karena hampir tidak mungkin untuk menguji situs web atau aplikasi Anda di semua browser web yang tersedia

Oleh karena itu, setelah membuat instance koneksi database kami dan memeriksa kesalahan koneksi, kami menetapkan rangkaian karakter yang akan digunakan skrip kami saat menampilkan data dari server database atau memasukkan data ke dalamnya

Kami menggunakan fungsi set-charset() untuk menentukan set karakter dengan mysqli

kelas MyDB {
publik statis $db;
}

MyDB. $db = new mysqli('localhost', 'db_username', 'db_password', 'db_name');

jika (MyDB. $db->connect_error) {
exit('Koneksi database gagal, harap coba lagi dalam beberapa detik. ');
}

MyDB. $db->set_charset('utf8');

Alasan mengapa kami menggunakan utf8 adalah karena ini adalah kumpulan karakter yang paling inklusif. Sekali lagi, kecuali jika Anda ingin menggunakan set karakter tertentu di situs web atau aplikasi Anda, utf8 adalah set karakter yang harus Anda gunakan. Anda dapat melihat daftar kumpulan karakter di sini jika Anda perlu menggunakan yang lain

Ini adalah cara terhubung ke database melalui kelas menggunakan ekstensi mysqli. Kelas koneksi database mysqli yang kami buat pasti dapat ditingkatkan dalam beberapa hal, tetapi sebagai permulaan dasar, kelas ini sudah cukup untuk menangani koneksi database dalam skrip Anda. Saya akan melanjutkan dengan topik lain seperti membaca dari database dan menulis ke database di posting mendatang