Tema abadi dengan PHP dan MySQL

Halo semuanya! Tentunya masing-masing dari mereka yang banyak menulis dan terus-menerus dalam PHP menemukan masalah mengoptimalkan dan menyederhanakan pertanyaan ke database MySQL . Seseorang sudah menulis kelas / prosedur yang mudah untuk diri mereka sendiri, seseorang menemukan sesuatu di ruang terbuka jaringan.

Karena skrip saya di PHP mulai berkurang menjadi satu tugas - mengambil dari basis data dan meneruskan data ini ke skrip Java sisi klien, saya membuatnya lebih mudah untuk diri saya sendiri dengan membuat kelas basis data yang nyaman (untuk saya, tentu saja) MySQL

Saya akan segera melakukan reservasi - kelas mqsli bawaan cukup nyaman dan fungsional, tetapi dihadapkan dengan pertanyaan yang sama setiap hari akan aneh untuk tidak sedikit mengurangi nasib Anda.

Kelas exDBase ditawarkan untuk perhatian Anda, ini pada dasarnya adalah pembungkus untuk kelas mysqli . Segera buat reservasi - Saya seorang programmer pemula, dan saya siap menerima banyak kritik untuk kode tertulis dalam komentar atau pesan pribadi. Saya tidak benar-benar memiliki RegExp misalnya, yang akan sangat menyederhanakan kode, mungkin ada keluhan lain. Namun demikian ...

Seluruh pustaka terkandung dalam satu file - exdbase.php . File ini berisi deskripsi kelas exDBase . Untuk mulai bekerja, Anda hanya perlu mengunduh file, daftarkan baris berikut:

require_once ('exdbase.php'); 

Pertama, buat instance kelas, ini sangat sederhana:

 $DB = new exDBase (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if ($DB->error) echo " : $DB->error"; 

Properti kesalahan $ DB-> akan selalu memiliki kesalahan dari operasi terakhir (jika ada kesalahan), atau itu akan kosong.

Formatnya hampir sama dengan instantiating kelas mysqli . Secara alami, alih-alih konstanta yang ditunjukkan dalam contoh, Anda perlu mengganti nilai riil untuk host, nama pengguna, kata sandi, dan nama basis data.

Sekarang kamu bisa berlatih. Misalkan kita memiliki database yang sudah jadi, dan memiliki tabel klien dengan bidang:

ID - nomor unik, kenaikan otomatis
NAME - nama pelanggan
USIA - usia pelanggan
JUMLAH - jumlah pembelian
BLOKED - boolean, klien terkunci atau aktif
PENGATURAN - parameter pribadi, kami menyimpannya dalam format JSON

Database kueri


Mari kita dapatkan semua entri dari tabel ' klien '. Ada metode fetchArray untuk ini .

 $res = $DB->fetchArray ('clients'); //         if ($res) foreach ($res as $client) echo print_r ($client, true); //      

Dan jika kita hanya ingin mendapatkan catatan permintaan pertama? Ada metode fetchFirst untuk ini .

 $res = $DB->fetchFirst ('clients'); //        if ($res) echo print_r ($client, true); //      

Tapi, kita hampir tidak perlu mendapatkan semua catatan dari tabel, selalu ada kondisi seleksi (bidang WHERE dalam perintah SELECT). Apa yang kita lakukan Ya, sangat sederhana. Ini adalah argumen kedua metode fetchArray atau fetchFirst.

Misalkan kita ingin memilih semua pelanggan yang bernama John. Di kelas kami, ini bisa dilakukan dengan dua cara.

Yang pertama adalah cukup mengatur kondisi dengan string dari bentuk "NAME = 'John'"

 $res = $DB->fetchArray ('clients', "NAME = 'John'"); 

Yang kedua adalah mengatur kondisi dalam array:

 $res = $DB->fetchArray ('clients', array ("NAME" => "John")); 

Dan jika ada lebih banyak kondisi? Misalnya, haruskah usia 30? Mudah:

 $res = $DB->fetchArray ('clients', array ("NAME" = "John", "AGE" => 30)); 

Dengan cara ini Anda dapat menggabungkan beberapa istilah pencarian. Tapi kesetaraan ... Dan jika kita ingin menemukan semua pelanggan dengan nama John yang berusia di atas 25 tahun? Di sini awalan khusus datang untuk menyelamatkan:

 $res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25)); 

Selain "> =" Anda dapat menggunakan: ">", "<", "<=", "! =", "<>", "! =". Dengan demikian, Anda dapat membuat kueri dengan berbagai tingkat kompleksitas dan selalu mendapatkan jawaban yang benar.

Parameter ketiga dari metode pencarian basis data adalah bidang tabel. Mereka dapat ditetapkan sebagai string (misalnya: "NAME, AGE") atau sebagai array: array ("NAME", "AGE").

 $res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE")); 

Parameter keempat dan terakhir untuk metode pengambilan fetchArray dan fetchFirst adalah urutan sortir. Itu juga ditentukan oleh string (ketik: “ID ASC, NAME DESC”) atau array array (“ID” => “ASC”, “NAME” => “DESC”).

 $res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"), array ("ID" => "ASC", "NAME" => "DESC")); 

Nah, diakhiri dengan data yang Anda tanyakan - dan bagaimana membatasi seleksi? Misalnya, hanya 10 entri pertama yang diperlukan?

Ini dilakukan dengan menggunakan metode setLimit (), seperti ini:

 $DB->setLimit (10); $res = $DB->fetchArray ('clients', "NAME = 'John'"); 

Metode setLimit () hanya bekerja pada satu permintaan, setelah itu batasnya diatur ulang.

Masukkan data baru


Ada metode insert () untuk menulis data baru.

 $id = $DB->insert ('clients', array ("NAME" => 'Peter', "AGE" => 27, "AMOUNT" => 1000.25)); 

Ini mengembalikan nilai kunci kenaikan otomatis utama (jika ada yang ditentukan dalam tabel). Dalam kasus kami, ini akan mengembalikan ID dari catatan yang dimasukkan.

Pembaruan data


Data diperbarui menggunakan metode pembaruan () .

 $DB->update ('clients', array ("NAME" => 'Peter'), array ("AGE" => 30, "AMOUNT" => 2000.25)); 

Kami memperbarui semua catatan dengan nama (bidang NAME) adalah 'Peter'. Argumen kedua untuk metode ini adalah kondisi pemilihan, dalam format yang persis sama dengan WHERE for SELECT. Nah, argumen ketiga untuk metode ini adalah data itu sendiri. Sekarang semua catatan dengan nama 'Peter' akan berusia 30 tahun dan jumlahnya akan menjadi 2000.25.

Penghapusan Data


Jika Anda sudah memahami logika perpustakaan, maka penghapusannya akan sangat sederhana. Metode ini disebut delete () .

 $DB->delete ('clients', array ("NAME" => 'Peter'); //      'Peter' $DB->delete ('clients', array (">AGE" => '20'); //       20. 

Ini adalah kunjungan singkat pertama ke perpustakaan exDBase. Ada sejumlah fitur lain yang lebih canggih, tetapi lebih banyak di lain waktu.

UPD: Anda dapat mengunduh file di GitHub

Kode yang bagus untuk semua!

Source: https://habr.com/ru/post/id420697/


All Articles