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)
MySQLSaya
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 GitHubKode yang bagus untuk semua!