MySQL meminta contoh di PHP. SQL - Permintaan dan pemrosesannya menggunakan PHP

Bekerja dengan database MySQL dengan RNR

Kuliah. Disiapkan prokhorov vs.


1. Koneksi skenario PNP dengan tabel MySQL

Pertimbangkan fitur yang paling sering digunakan yang memungkinkan Anda bekerja dengan database MySQL oleh RNR.

Ketika RNR dan MySQL berinteraksi, program berinteraksi dengan DBMS melalui satu set fungsi.

1.1 Koneksi ke server. Fungsimysql_connect.

Sebelum bekerja dengan database, Anda harus menginstal dengannya koneksi jaringan, serta melakukan otorisasi pengguna. Ini adalah fungsi mysql_connect ().

sumber daya mysql_connect (]])

Fitur ini menetapkan koneksi jaringan ke database MySQL yang terletak di host $ Server (default adalah localhost, i.e. komputer saat ini) dan mengembalikan pengidentifikasi koneksi terbuka. Semua pekerjaan lebih lanjut dilakukan dengan pengidentifikasi ini. Semua fungsi lain yang mengambil pengidentifikasi ini (deskriptor) sebagai argumen akan secara unik menentukan basis data yang dipilih. Saat mendaftar, nama pengguna adalah $ pengguna dan kata sandi $ kata sandi (secara default, nama pengguna dari mana proses saat ini sedang berjalan - ketika skrip debugging: root, dan kata sandi kosong):

$ dbpasswd \u003d ""; //Kata sandi

// tampilkan peringatan

gema ("

");

Variabel $ DBLODAS, $ DBUSER dan $ DBPASSWD Simpan nama server, nama pengguna dan kata sandi.

1.2 Tarve koneksi ke server. Fungsimysql_close.

Koneksi ke server MySQL akan ditutup secara otomatis di akhir skrip, atau ketika memanggil fungsi MySQL_Close

bool mysql_close ()

Fitur ini memecah koneksi ke server MySQL, dan mengembalikan BENAR dengan eksekusi yang berhasil atas operasi dan false sebaliknya. Fungsi tersebut menerima deskriptor koneksi basis data sebagai argumen yang dikembalikan oleh fungsi MySQL_Connect.

$ dblocation \u003d "localhost"; // Nama server

$ dbuser \u003d "root"; //Nama pengguna

$ dbpasswd \u003d ""; //Kata sandi

// masukkan koneksi ke server database

// menekan simbol output kesalahan @ sebelum memanggil fungsi

$ dbcnx \u003d @ mysql_connect ($ dblocation, $ dbuser, $ dbpasswd);

jika (! $ dbcnx) // Jika deskriptornya 0, koneksi tidak diinstal

// tampilkan peringatan

gema ("

Dgn B. saat ini Server basis data tidak tersedia, sehingga tampilan halaman yang benar tidak memungkinkan.");

if (mysql_close ($ dbcnx)) // break koneksi

echo ("koneksi ke database dihentikan");

echo ("Dia berhasil menyelesaikan koneksi");

1.3 Membuat database. Buat fitur basis data

Perintah - Membuat database hanya tersedia untuk administrator server, dan pada sebagian besar hosting tidak mungkin untuk melakukannya:

Buat Nama Database berdasarkan

Membuat database baru dengan nama pengikatan nama.

Contoh bekerja dengan fitur ini:

@Mysql_query ("Buat Database $ DBNAME");

Disarankan untuk menggunakan apostrof di mana-mana ("SQL - Command") sebagai pembatas garis yang berisi perintah SQL. Ini dapat memastikan bahwa tidak ada variabel $ secara tidak sengaja diinterpolasi (I.E. Ini tidak akan diganti dengan nilainya), dan keamanan skrip akan meningkat.

Perintah Create Database Database Crew hanya tersedia untuk Superuser, dan tidak mungkin untuk melakukan pengguna yang sederhana pada sebagian besar pengguna hosting. Ini hanya tersedia untuk administrator server.

Untuk eksperimen, buat basis data testbase dengan melakukan kueri SQL dari baris perintah. Untuk melakukan ini, masuk ke sistem MySQL dan masuk ke garis komando MySQL:

mySQL\u003e Buat testbase basis data;

Setelah itu, Anda harus memanggil:

mySQL\u003e Gunakan TestBase;

Basis data dibuat:


1.4 Pilih Database. Fungsimysql_select_db.

Sebelum mengirim permintaan pertama ke server MySQL, Anda harus menentukan basis data mana yang akan kami kerjakan. Untuk tujuan ini, fungsi MySQL_SELECT_DB dimaksudkan:

bool mysql_select_db (string $ database_name [, sumber daya $ link_identifier])

Dia memberi tahu PHP bahwa dalam operasi lebih lanjut dengan koneksi $ link_identifier akan digunakan $ database_name.

Menggunakan fungsi ini setara dengan menelepon perintah penggunaan dalam kueri SQL, I.E. Fungsi MySQL_SELECT_DB memilih basis data untuk pekerjaan lebih lanjut, dan semua pertanyaan SQL berikutnya berlaku untuk basis data yang dipilih. Fungsi ini mengambil nama database yang dipilih Database_Name sebagai argumen dan deskriptor koneksi sumber daya. Fungsi kembali benar dengan operasi yang berhasil dan salah - jika tidak:

// Kode koneksi dengan basis data

jika (! @mysql_select_db ($ dbname, $ DBCNX))

// tampilkan peringatan

gema ("

B Sekarang basis data tidak tersedia, sehingga tampilan halaman yang benar tidak memungkinkan.");

1.5 Kesalahan pemrosesan

Jika kesalahan terjadi selama bekerja dengan MySQL (misalnya, petunjuknya tidak seimbang atau tidak ada parameter yang cukup), maka pesan kesalahan dan nomornya dapat diperoleh dengan menggunakan dua fungsi yang dijelaskan di bawah ini.

Penting untuk hati-hati dan menggunakan fungsi-fungsi ini secara tepat waktu, karena jika tidak, debugging skrip mungkin menjadi lebih rumit.

● Fungsi:

int mysql_errno ()

mengembalikan jumlah kesalahan terbaru yang direkam. Anda tidak dapat menentukan pengidentifikasi koneksi $ link_idefier jika hanya satu koneksi yang diinstal selama skrip waktu berjalan.

● Fungsi:

string mysql_error ()

mengembalikan bukan angka, tetapi string yang berisi teks pesan kesalahan. Lebih mudah digunakan dalam tujuan debugging. Biasanya, mysql_error digunakan dengan desain atau mati (), misalnya:

@Mysql_connect ("localhost", "pengguna", "kata sandi")

atau mati ("kesalahan menghubungkan ke database:" .mysql_error ());

Operator @, seperti biasa, digunakan untuk menekan peringatan standar, yang dapat terjadi jika terjadi kesalahan.

DI versi terbaru. Peringatan RNR dalam fungsi MySQL tidak terdaftar secara default.

1.6 Koneksi ke MySQL. File (config.php.)

Biasanya di situs ada beberapa skrip sekaligus, yang Anda memerlukan akses ke database yang sama.

Kode yang bertanggung jawab untuk menghubungkan ke MySQL disarankan untuk dialokasikan file terpisahdan kemudian terhubung menggunakan fungsi sertakan ke skrip yang diperlukan.

Masuk akal untuk menempatkan fungsi untuk menghubungkan, memilih dan membuat database ke file yang sama (config.php), di mana variabel dinyatakan dengan nama server $ dlocation, nama pengguna $ dbuser, kata sandi $ dbpasswd dan nama Nama basis data $ DBNAME:

Config.php listing:

//config.php kode file yang berisi parameter koneksi dengan pemilihan server dan basis data

// Menampilkan pesan kesalahan ke browser

$ dblocation \u003d "localhost"; // Nama server

$ dbname \u003d "Sisipkan Nama Basis" // Nama Database: Dibuat atau sudah ada

$ dbuser \u003d "root"; // nama pengguna basis data

$ dbpasswd \u003d ""; //Kata sandi

// masukkan koneksi ke server database

// menekan simbol output kesalahan @ sebelum memanggil fungsi

[Dilindungi Email]_Connect ($ dblocation, $ dbuser, $ dbpasswd);

jika (! $ dbcnx) // Jika deskriptornya 0, koneksi ke server database tidak diinstal

// tampilkan peringatan

gema ("

Saat ini, server database tidak tersedia, sehingga tampilan halaman yang benar tidak mungkin.

");

// Buat basis data $ DBNAME - itu hanya dapat melakukan superuser

// Jika database sudah ada, akan ada kesalahan non-kritis

@Mysql_query ("buat basis data jika tidak ada $ dbname ');

// Kode koneksi dengan basis data: Kami melakukan pemilihan yang jelas dari basis data yang baru dibuat atau database yang ada

// menekan simbol output kesalahan @ sebelum memanggil fungsi

jika ( [Dilindungi Email]_select_db ($ dbname, $ dbcnx)) // Jika deskriptor adalah 0, koneksi basis data tidak diinstal

// tampilkan peringatan

gema ("

Saat ini, basis data tidak tersedia, sehingga tampilan halaman yang benar tidak mungkin.

");

// Kecil fungsi tambahanyang menampilkan pesan

// tentang kesalahan dalam kasus kesalahan permintaan basis data

fungsi Putror ($ Pesan)

echo ("");


2. Lakukan kueri basis data

2.1 Membuat tabel. Fungsi BUAT TABEL:

Buat nama tabel tabel (jenis namepole, jenis namepole,)

Perintah ini dalam database membuat tabel baru dengan kolom (bidang), didefinisikan oleh nama (nama) sendiri dan jenis yang ditentukan. Setelah membuat tabel, akan mungkin untuk menambahkan catatan yang terdiri dari bidang yang tercantum dalam perintah ini.

Listing Test_11.php. Sebuah program yang membuat tabel baru dalam database:

termasuk "config.php"; // terhubung ke server dan pemilihan basis data

mysql_query ("buat tabel jika tidak ada orang

id int auto_increment kunci primer,

atau mati ("kesalahan mysql:" .mysql_error ());


Script ini menciptakan meja orang baru dengan dua bidang. Bidang pertama memiliki tipe int (integer) dan ID nama. Teks tipe kedua (string teks) dan nama nama.

Jika tabel ada, desain atau mati () akan bekerja.

Frasa opsional jika tidak melebihi, jika ditentukan, kata MySQL Server, bahwa itu seharusnya tidak menghasilkan pesan kesalahan jika tabel dengan nama yang ditentukan sudah ada dalam database.

Ingat saat-saat ketika aku tidak tahu apa mysql. Dan sering mencari artikel semacam itu di internet. Tapi, untuk beberapa alasan, mereka jarang ditemukan. Sekarang saya memutuskan untuk menjabarkan artikel yang bermanfaat mysql. dan pHP. Itu menjadi satu lagi. Saya akan mencoba menulis semuanya dalam bahasa yang dapat diakses.

memulai dengan MySQL dan PHP

Jadi, untuk memulai, kami memerlukan server lokal untuk diluncurkan skrip PHP. dan terhubung ke database (saya kemudian akan memanggil database, yang berarti "database"). Jika Anda masih tidak memiliki server lokal, Anda harus terlebih dahulu membaca instalasi dan konfigurasi localhost., dan kemudian mulai mempelajari basis data mysql. dan DBMS-nya (sarana manajemen basis data).

Jika Anda sudah memiliki server ini, kami melakukannya. Untuk memulai dengan, saya ingin memperkenalkan Anda ke DBMS Phpmyadmin.Ini memungkinkan Anda untuk mengelola (menambah, menghapus, memodifikasi) catatan dalam database.

Ini adalah halaman utama DBMS PHPMYAdmin.. Dari sini Anda dapat membuat basis data Anda, dan menyimpan entri yang diperlukan di dalamnya. Sangat nyaman ketika membuat situs, karena informasi disusun dan Anda dapat dengan sangat cepat mendapatkan entri dari database.

Seperti yang telah disebutkan, bagian pertama dari artikel, kenalan dengan mysql. dan phpmyadmin.. Saya pikir sekarang Anda mengerti apa itu MySQL dan kita dapat mulai menjelajahi fungsionalitas phpmyadmin. Untuk mulai bekerja, kita perlu membuat database itu sendiri (basis data). Dia akan memiliki namanya sendiri yang akan kita cari nanti.

Berikut ini adalah struktur umum dari struktur basis data:

Untuk membuat basis data, masukkan di bidang input di bawah garis "Buat Basis Data Baru" (pada halaman utama phpmyadmin) Nama apa pun (bukan Cyrillic!) Untuk basis di masa depan. Saya akan membuat database bernama "Baza". Sekarang, mengikuti diagram struktur BD, kita perlu membuat tabel. Untuk melakukan ini, setelah membuat pangkalan, Anda akan memiliki jendela seperti itu:

Di sini saya membuat meja dengan nama pengguna dan 3 bidang di dalamnya. PHPMYAdmin lebih lanjut akan meminta kami untuk mengatur struktur untuk setiap bidang:

Di sini di kolom "bidang" Anda perlu menentukan nama, dalam "Type" Tentukan jenis data yang akan disimpan di sana (int adalah angka, varchar-line atau teks kecil). Selain itu, Anda menentukan bidang bernama "id" parameter "auto_creament", yang berarti akan meningkat setiap kali memasukkan data apa pun, dan mengatur parameter "kunci utama" (menempatkan bulat), itu berarti pada kolom pertama kita bisa Pasti mengidentifikasi bidangnya.

"Pasti mengidentifikasi bidang" berarti bahkan jika nama dan nama keluarga akan sama, kolom ID akan memiliki nilai yang berbeda (karena secara otomatis meningkat per unit setiap kali).

Sekarang klik "Simpan". Dengan demikian, kami membuat tabel pengguna di mana kami dapat menyimpan nama dan nama keluarga (ID tidak perlu dimasukkan, MySQL akan melakukan segalanya untuk kami), di pengguna basis data. Kami membuat tabel untuk menyimpan catatan. Dan bagaimana memasukkannya ke sana? Baca di bawah

Pilih di menu "Tempel" dan tulis nilai yang diinginkan ke bidang yang diperlukan. Sekarang bagaimana cara menghapus atau mengubah nilai dalam database MySQL dari basis data phpmyadmin ... untuk menghapus, cukup buka menu ikhtisar dan tekan palang merah di seberang rekaman:

Dan untuk mengedit, klik pada pensil dan ganti bidang yang diperlukan. Nah, dalam pelajaran ini selesai. Sekarang Anda dapat mengelola database MySQL menggunakan phpmyadmin. Dalam pelajaran selanjutnya, saya akan mengajari Anda untuk menyimpan, menerima, menghapus, dan memperbarui data dalam database menggunakan PHP.. Ini sangat nyaman dan praktis.

Bekerja dengan database MySQL dari PHP

Jadi, pertama-tama Anda perlu belajar untuk terhubung ke database yang sudah diketahui. Untuk melakukan ini, kode ini digunakan:

Dalam kode di atas, saya terhubung ke server localhost menggunakan login akar yang tidak memerlukan kata sandi (oleh karena itu saya tidak menentukannya). Setelah terhubung ke database, kami dapat menjalankan semua operasi yang dilakukan dalam phpmyadmin. Artinya, masukkan, hapus, ubah dan dapatkan berbagai informasi. Sekarang, pada poin:

Sisipkan entri di database SQL pada PHP

$ Query \u003d "masukkan ke` table` (" point the field`, `tentukan bidang ') (" nilai apapun "," nilai apa pun ")"; $ result \u003d mysql_query ($ kueri); Jika ($ result \u003d\u003d Benar) (Echo "berhasil!";) Lainnya (gema "kesalahan!
".mysql_error ();)

Artinya, sisipan dibuat oleh fungsi Sisipkan. Jika semuanya berjalan dengan sukses, MySQL akan mengembalikan hasil yang benar, atau sebaliknya - salah.

Bidang dapat ditentukan setidaknya berapa banyak, yang utama adalah bahwa mereka semua ada dalam database. Artinya, misalnya, ada tabel di mana ada bidang "nama", "nama keluarga" dan "kota". Untuk memasukkannya, kita akan menggunakan kode seperti itu:

$ Query \u003d "masukkan ke" nama pengguna (`nama`,` nama keluarga`, `city`) (" Ruslan "," Huzin "," Kokshetau ")"; $ result \u003d mysql_query ($ kueri); Jika ($ result \u003d\u003d Benar) (Echo "berhasil!";) Lainnya (gema "kesalahan!
".mysql_error ();)

Melepaskan entri dari database SQL ke PHP

Hapus dilakukan dengan fungsi hapus. Untuk ini akan ada sesuatu seperti kode ini:

$ Query \u003d "Hapus dari` `` where `name` \u003d" ruslan ""; $ result \u003d mysql_query ($ kueri); Jika ($ result \u003d\u003d Benar) (Echo "berhasil!";) Lainnya (gema "kesalahan!
".mysql_error ();)

Artinya, kami menghapus semua baris dari tabel USSS (well, atau satu), di mana kolom nama sama dengan nilai ruslan.

Mengubah nilai dalam database MySQL pada PHP

Kami juga dapat membuat perubahan pada catatan yang sudah ada di tabel. Misalnya, kita perlu mengganti nilai kolom nama berturut-turut, di mana kolom nama keluarga huzin. Untuk melakukan ini, lakukan kode seperti itu:

$ Query \u003d "update`` `` name` \u003d "myname" di mana` surname` \u003d "huzin" "; $ result \u003d mysql_query ($ kueri); Jika ($ result \u003d\u003d Benar) (Echo "berhasil!";) Lainnya (gema "kesalahan!
".mysql_error ();)

Mendapatkan nilai dari database

Sekarang yang paling menarik. Setelah kami merekam sesuatu, maka Anda harus kembali? Misalnya, kita perlu mendapatkan dari tabel pengguna semua garis di mana kolom nama sama dengan ruslan. Untuk melakukan ini, kita perlu sedikit kode berbeda daripada pada contoh pertama. Ini sebenarnya dia:

$ Query \u003d "pilih * dari mana` nama` \u003d" ruslan ""; $ result \u003d mysql_query ($ kueri); Jika ($ result \u003d\u003d Benar) (Echo "berhasil!";) Lainnya (gema "kesalahan!
".mysql_error ();) $ data \u003d mysql_fetch_array ($ Hasil); / * Sekarang data dari tabel disimpan dalam variabel * /

Di sini kami membutuhkan fitur lain, untuk merekam data yang dipilih ke dalam variabel (array) pada PHP. Untuk menghubungi string yang dipilih, kami menulis seperti ini:

$ Data ["Nama Kolom"]

artinya, untuk mendapatkan nama keluarga dari baris yang dipilih (di mana namanya Ruslan), kita harus menulis ke kesimpulan:

echo $ data ["nama keluarga"];

Dan ketika pengambilan sampel dari tabel, saya menulis pilih *, tanda bintang ini berarti Anda perlu memilih semua kolom dari string. Jika kita perlu, misalnya, pilih hanya nama keluarga, tulis Pilih `Surname``. Dan untuk pengambilan sampel sekaligus beberapa baris dari tabel, siklus juga akan diperlukan untuk output mereka. Ini jika misalnya, baris dengan kolom ruslan akan beberapa. Ini kodenya:

$ Query \u003d "pilih * dari mana` nama` \u003d" ruslan ""; $ result \u003d mysql_query ($ kueri); sementara ($ data \u003d mysql_fetch_array ($ hasil)) (echo $ data ["nama"]. "
"$ Data [" Nama keluarga "]."


"; }

Sekarang semua baris dari mana kolom nama sama dengan nilai ruslan akan ditampilkan.

Di sini Anda bertemu fungsi kontrol utama database MySQL langsung dari skrip PHP..

Dalam artikel ini kita akan belajar kirim permintaan ke database melalui PHP. Artikel ini sangat penting, dan perlu bagi Anda untuk memahami. Namun, saya akan menenangkan Anda - bahannya sangat sederhana, jadi seharusnya tidak ada kesulitan.

Sebelum beralih ke topik artikel, saya memperingatkan sebelumnya bahwa saya tidak akan membongkar secara detail bahasa SQL.. Semua informasi yang diperlukan dibongkar dalam kategori yang didedikasikan, dan di sini kita hanya kami bekerja dengan MySQL melalui PHP.

Sekarang pergi ke K. mengirim permintaan basis data ke PHP:


}
$ MySQLi-\u003e Query ("Masukkan ke MyTable (Name, Email) Nilai (" MyName "," [Dilindungi Email]")");
$ MySQLi-\u003e Tutup ();
?>

Dalam contoh ini, kami terhubung ke database, memeriksa keberhasilan koneksi, mengirim permintaan menggunakan metode kueri ()Dan kemudian menutup koneksi. Seperti yang Anda lihat, semuanya sangat sederhana. Untuk mengirim siapa saja SQL Queries. Hanya satu metode - kueri (), Oleh karena itu, dalam hal ini, semuanya sangat sederhana.

Sekarang sedikit menyulitkan tugasnya. Mari kita lihat permintaan yang kembali hasil_set. - Hasilnya. Permintaan paling populer diberikan hasil_set. - Ini adalah contoh data dari tabel. Dalam contoh berikut, kami akan membuat sampel data, dan kemudian merangkum hasilnya:

$ mysqli \u003d @new mysqli ("localhost", "admin", "pass", "mybase");
If (MySQLI_Connect_errno ()) (
Echo "koneksi tidak mungkin:" .mysqli_connect_error ();
}
$ result_set \u003d $ mysqli-\u003e
Sementara ($ baris \u003d $ result_set-\u003e fetch_assoc ()) (
Print_r ($ baris);
Echo "
";
}
$ result_set-\u003e tutup ();
$ MySQLi-\u003e Tutup ();
?>

Untuk memulai, saya akan menjelaskan sedikit, yaitu hasil_set.. Hasil_set. - Ini adalah tabel dengan hasilnya. Tabel ini memiliki serangkaian catatan (baris tabel). Dan untuk output dari semua catatan, Anda perlu memindahkan setiap baris tabel dan menariknya. Dan sekarang saya menjelaskan contoh: setelah mengirim permintaan, kami terbentuk hasil_set.. Kemudian kami menetapkan variabel dalam siklus baris Nilai baris berikutnya, yaitu, array satu dimensi yang mengembalikan metode fetch_assoc (). Ketika semua garis habis, metode fetch_assoc () kembali salahdan akan dilepaskan dari siklus. Di dalam siklus sementara Kami hanya memperoleh array menggunakan fungsi debugging. print_r ()Meskipun tentu saja akan ditarik menggunakan untuk setiap.Tapi sekarang tidak perlu.

Mari kita ringkas dengan singkat bagaimana cara kerjanya hasil_set.:

  1. Menerima hasil_set.Dengan mengirimkan permintaan yang sesuai ke database.
  2. Dalam siklus pada setiap iterasi untuk menetapkan baris berikut (perekaman) dari hasil_set. menggunakan metode fetch_assoc () Beberapa variabel baris. Kemudian Anda dapat bekerja dengan variabel ini seperti dengan array asosiatif satu dimensi, di mana tombol tersebut adalah nama bidang tabel, dan nilai-nilai sesuai dengan entri saat ini.
  3. Pastikan untuk menutup hasil_set. metode menutup ()Untuk menutupi sumber daya.

Bagaimana Anda melihat metode fetch_assoc () Mengembalikan rekor selanjutnya selalu. Itu adalah, pertama pertama, kemudian ke-2, lalu ke-3 dan seterusnya. Jika Anda memiliki pengalaman pemrograman yang baik, Anda akan segera menebak bahwa ini karena pointer batin, yang Anda, tentu saja, dapat bergerak. Di mana itu digunakan? Misalnya, dapat digunakan ketika Anda perlu bekerja dengannya hasil_set. tidak 1 , tetapi 2 Lebih dari sekali. Untuk membentuk kembali permintaan yang sama, Anda dapat memindahkan pointer ke awal. Dan kemudian Anda bisa terlibat lagi hasil_set. Menggunakan metode fetch_assoc ().

Untuk mengubah posisi pointer ada metode data_seek ()yang mengambil bilangan bulat dari 0 sebelum " jumlah catatan - 1", masing-masing, pointer naik ke parameter perekaman yang sesuai:

$ mysqli \u003d @new mysqli ("localhost", "admin", "pass", "mybase");
If (MySQLI_Connect_errno ()) (
Echo "koneksi tidak mungkin:" .mysqli_connect_error ();
}
$ result_set \u003d $ MySQLi-\u003e Query ("Pilih * dari MyTable");
$ result_set-\u003e num_rows;
Sementara ($ baris \u003d $ result_set-\u003e fetch_assoc ()) (
Print_r ($ baris);
Echo "
";
}
$ Result_set-\u003e data_seek (0);
Sementara ($ baris \u003d $ result_set-\u003e fetch_assoc ()) (
Print_r ($ baris);
Echo "
";
}
$ result_set-\u003e tutup ();
$ MySQLi-\u003e Tutup ();
?>

Dalam contoh ini, kami membawa jumlah catatan dalam Hasil_Set Menggunakan properti. num_rows.. Dan juga berkenalan dengan metode ini data_seek (). Yaitu, kami membahas seluruh hasil, lalu mengembalikan pointer ke 0 Y. Rekam dan sekali lagi membahas hasilnya.

Pada artikel ini, kami mengulangi koneksi ke database dan menutup koneksi. Dan juga belajar cara mengirim permintaan ke database melalui PHP. Terpelajar, cara menerima result_set. Dan bagaimana cara bekerja dengannya. Hanya itu yang perlu Anda ketahui untuk sukses bekerja dengan MySQL di PHP.

Untuk mendapatkan pengembalian maksimum dari database MySQL Anda, penting untuk memahami cara terhubung dari program pengguna ke PHP ke database MySQL.

Manual ini menjelaskan tiga metode berikut bersama dengan program yang sesuai dari contoh program pada PHP, yang akan menjelaskan cara terhubung dengan PHP ke database.

  • Koneksi menggunakan ekstensi MySQLI (Disarankan)
  • Koneksi dengan PDO (Disarankan)
  • Koneksi menggunakan fungsi tradisional mysql_ (setpoint) yang sudah ketinggalan zaman

Untuk melakukan ini, instal paket PHP-MySQL.

Berdasarkan distribusi redhat, termasuk, gunakan yum untuk menginstal PHP-MySQL, seperti yang ditunjukkan di bawah ini.

Yum instal php-mysql

Tergantung pada sistem Anda, kami akan menginstal atau memperbarui dependensi berikut:

  • pHP-CLI.
  • pHP-umum.
  • pHP-PDO.
  • pHP-PGSQL

Setelah semuanya diinstal, halaman phpinfo akan menampilkan modul MySQL, seperti yang ditunjukkan di bawah ini:

Untuk semua contoh di bawah ini, kami akan terhubung ke database MySQL yang sudah ada. Jika Anda baru di MySQL, ini adalah tempat yang baik untuk memulai :.

Catatan: Semua yang dijelaskan di sini juga akan bekerja dengan MariaDB, karena berfungsi pada MySQL.

1. Menghubungkan ke PHP menggunakan ekstensi MySQLI

MySQLI berarti MySQL membaik.

Harap dicatat bahwa sebagian besar distribusi (misalnya: CentOS), PHP-MySQLI sudah merupakan bagian dari paket PHP-MySQL. Dengan demikian, Anda tidak perlu mencari dan menginstal paket PHP-MySQLI. Yang perlu Anda lakukan adalah menginstal paket PHP-MySQL untuk mendapatkan ekstensi MySQLI yang berfungsi pada sistem Anda.

Buat file MySQLi.php berikut di Documentroot VapeChe:

connect_Error) (Die ("Error: Tidak dapat menghubungkan:". $ Conn-\u003e Connect_Error);) Echo "Hubungkan ke database.
"; $ result \u003d $ conn-\u003e query (" pilih nama dari karyawan "); echo" Jumlah baris: $ hasil-\u003e num_rows "; $ hasil-\u003e tutup ();

Di atas:

  • MySQLI - Fitur ini akan memulai koneksi baru menggunakan ekstensi MySQLI. Fitur ini akan memakan empat argumen:
    1. Nama host di mana database MySQL berfungsi
    2. Nama pengguna untuk koneksi MySQL
    3. Kata sandi pengguna MySQL.
    4. Database MySQL untuk koneksi.
  • Fungsi kueri - Gunakan untuk menentukan permintaan MySQL Anda. Dalam contoh ini, kami memilih kolom nama dari basis data karyawan.
  • Akhirnya, kami menampilkan jumlah baris yang dipilih menggunakan variabel num_rows. Kami juga menutup koneksi seperti yang ditunjukkan di atas.

Hubungkan ke database. Jumlah string: 4

Catatan: Jika Anda mencoba untuk terhubung ke database MySQL jarak jauh, maka Anda dapat melakukannya untuk menghindari kesalahan koneksi ke host: Cara memungkinkan klien MySQL terhubung ke server jarak jauh MySQL.

2. Koneksi menggunakan PHP ke MySQL dengan ekstensi PDO

PDO berarti objek data PHP.

PDO_MYSQL mengimplementasikan antarmuka PDO yang disediakan oleh PHR untuk menghubungkan program ke database MySQL.

Di sebagian besar distribusi Linux (misalnya, CentOS dan RedHat), paket PHP-PDO sudah termasuk dalam paket PHP-MySQL. Dengan demikian, Anda tidak perlu mencari dan menginstal paket PHP-PDO. Yang perlu Anda lakukan adalah menginstal paket PHP-MySQL untuk mendapatkan ekstensi menjalankan PDO_MYSQL PHP pada sistem Anda.

Buat file MySQL-PDO.php berikut di dokumen Apache Anda:

setAttribute (PDO :: attr_errmode, PDO :: errmode_Exception); Echo "Hubungkan ke database.
"; $ SQL \u003d" Pilih Nama dari Karyawan "; Cetak" Nama Karyawan:
"; Foreach ($ Conn-\u003e Query ($ SQL) sebagai $ baris) (cetak $ baris [" nama "]."
";) $ Conn \u003d null;) Tangkap (ECHO" Kesalahan: Tidak dapat menghubungkan: ". $ ERR-\u003e GetMessage ();)?\u003e

Di atas:

  • pDO baru - akan membuat objek PDO baru yang akan mengambil tiga argumen berikut:
    1. String koneksi MySQL: akan dalam format "MySQL: host \u003d $ hostname; dbname \u003d $ dbname". Dalam contoh di atas, basis data beroperasi pada host lokal, dan kami terhubung ke database Andreyex.
    2. Nama pengguna untuk menghubungkan ke MySQL.
    3. Kata sandi untuk pengguna MySQL.
  • Variabel $ SQL - Membuat kueri SQL yang ingin Anda lakukan. Dalam contoh ini, kami memilih kolom nama dari tabel karyawan.
  • kueri ($ SQL) - Di sini kami melakukan permintaan SQL, yang baru saja kami buat.
  • foreach - Di sini kami menjalankan perintah di atas dan menyimpannya dalam baris variabel $, dan kemudian kami tunjukkan menggunakan perintah cetak.
  • Di MySQL PDO untuk menutup koneksi, cukup atur ulang nilai variabel $ Conn.

Ketika Anda menelepon MySQLI.php dari browser Anda, Anda akan melihat kesimpulan berikut, yang menunjukkan bahwa PHP dapat terhubung ke database MySQL dan membuat sampel data.

Hubungkan ke database. Nama Petugas: Siteslan Maria Oleg

3. Menghubungkan ke PHP menggunakan fungsi mysql_ (setpoint)

Gunakan metode ini hanya jika Anda menggunakan versi PHP yang lebih lama dan tidak dapat memperbaruinya ke versi baru untuk beberapa alasan.

Ini adalah ekstensi PHP 5,5 yang sudah ketinggalan zaman. Tetapi mulai dengan versi PHP 7.0, itu tidak akan berfungsi, karena telah dihapus.

Dimulai dengan versi PHP 5.5 ketika Anda menggunakan fungsi-fungsi ini, mereka akan menghasilkan E_DECTRECATED ERROR.

Buat file MySQL-Legacy.php berikut di bawah Apache Documentroot:

"; $ result \u003d mysql_query); $ baris \u003d mysql_fetch_row ($ hasil); echo" karyawan 1: ", $ baris,"
\\ n "; mysql_close ($ conn);?\u003e

Di atas:

  • Fitur MySQL_Connect membutuhkan tiga argumen: 1) Nama host, di mana database MySQL berfungsi, 2) Nama pengguna untuk menghubungkan ke MySQL, 3) Kata Sandi untuk MySQL. Di sini Anda terhubung ke database MySQL, yang berjalan di server lokal menggunakan nama pengguna root dan kata sandinya.
  • Fungsi MySQL_SELECT_DB - sebagai berikut dari nama, akan memilih basis data yang ingin Anda hubungkan. Ini setara dengan perintah "gunakan". Dalam contoh ini, kami terhubung ke database Andreyex.
  • Function MySQL_Query - Gunakan untuk menentukan permintaan MySQL Anda. Dalam contoh ini, kami memilih kolom nama dari basis data karyawan.
  • mysql_fetch_row - Gunakan fitur ini untuk mengekstrak baris dari kueri SQL yang baru saja kita buat.
  • Akhirnya, tutup koneksi menggunakan perintah mysql_close, seperti yang ditunjukkan di atas.

Saat menelepon mysql-legacy.php dari browser Anda, Anda akan melihat kesimpulan berikut, yang menunjukkan bahwa PHP telah dapat terhubung ke database MySQL dan membuat sampel data.

Hubungkan ke database. Karyawan 1: Andreyex

Dengan ...

Membuat koneksi dengan cara yang berbeda:

1) Metode Koneksi Dedovsky Old ke MySQL:

$ Conn \u003d mysql_connect ($ db_hostname, $ db_username, $ db_password) atau mati ("tidak ada koneksi ke server");
mysql_select_db ($ db_database, $ conn) atau mati ("tidak berhasil terhubung ke database");

Penjelasan variabel di bawah ini.

Pada saat yang sama, fungsi digunakan:

  • mysql_connect () - Untuk terhubung ke server;
  • mysql_select_db () - Untuk terhubung ke database;

Pada saat yang sama, kami terus-menerus memeriksa keberadaan kesalahan dengan cara ini: atau mati ("kesalahan begitu"); - Diterjemahkan seperti atau mati dengan kesalahan seperti itu - untuk segera menemukan di mana kesalahannya.

config.php.

// variabel untuk koneksi dengan basis data
$ Host \u003d "localhost"; / Tuan rumah
$ username \u003d "root"; // Kata sandi untuk menghubungkan ke basis data
$ kata sandi \u003d ""; // Kata sandi untuk mencuri ke database - pada komputer lokal itu dapat memiliki nilai kosong.
$ Database_Name \u003d "My-Dolgi"; // nama bd.

// cara hidup lama dengan basis data
Mysql_connect ($ host, $ username, $ kata sandi) atau mati ("Saya tidak dapat terhubung untuk membuat senyawa");

// Pilih basis data. Jika kesalahannya diputar
mysql_select_db ($ database_name) atau mati (mysql_error ());

index.php.

membutuhkan_once "config.php";


$ Result \u003d mysql_query ("pilih nama, uang dari dolg order oleh uang desc limit 5") atau mati (mysql_error ());



";


Sementara ($ baris \u003d mysql_fetch_assoc ($ hasil)) (
";
}


mysql_free_result ($ Hasil);

// tutup koneksi
mysql_close ();

2) Gaya prosedural yang lebih progresif - koneksi dengan database dengan MySQLI:

Metode ini:

  1. mudah;
  2. lebih cepat hingga 40 kali;
  3. peningkatan keamanan;
  4. ada fitur dan fungsi baru;

Contoh koneksi dengan database pada PHP dengan sampel dari tabel

config.php.

// sosiologi dengan basis data
$ link \u003d mysqli_connect ("localhost", "nama pengguna", "kata sandi", "nama-database"); // di sini saya memasukkan data Anda secara langsung: nama pengguna, kata sandi dan nama database, bidang pertama biasanya localhost

// output kesalahan koneksi
Jika (! $ LINK) (
ECHO "Kesalahan menghubungkan ke database. Kode kesalahan:". mysqli_connect_error ();
keluar;
}

Catatan - Di mana-mana menggunakan MySQLI, bukan MySQL !!!

index.php.

membutuhkan_once "config.php";

// jalankan permintaan. Jika kesalahan ditampilkan
Jika ($ result \u003d mysqli_query.($ Link, "Pilih Nama, Uang Dari Dolg Order oleh Uang Desc Limit 5")) (

Echo "Kepada siapa aku harus turun:

";

// Pemilihan hasil kueri
Sementara ($ baris \u003d mysqli_fetch_assoc.($ hasil)) (
Echo $ baris ["nama"]. "Dengan hutang." $ Baris ["uang"]. "Rubel.
";
}

// Pembebasan memori yang digunakan
mysqli_free_result.($ hasil);

// tutup koneksi
mysqli_close.($ Link.);
}

Seperti yang Anda lihat, beberapa momen berubah (dialokasikan dalam huruf miring).

3) Metode berorientasi objek untuk menghubungkan ke database MySQL - menggunakan metode dan kelas:

Cons: Lebih sulit dan kurang rentan terhadap kesalahan.

Pro: Brevity and Convenience untuk programmer dengan pengalaman.

$ Conn \u003d New MySQLI ($ db_hostname, $ db_username, $ db_password, $ db_database);
Jika ($ Conn-\u003e Connect_errno) (
Mati ($ conn-\u003e connect_error);
Koneksi yang lain (Echo "dengan basis data telah berhasil ditetapkan";)

di sini, pada prinsipnya, semuanya intuitif:

  • $ db_hostname adalah tuan rumah (kebanyakan localhost),
  • $ db_database - nama BD.;
  • $ Db_username dan $ db_password - masing-masing - nama pengguna dan kata sandi!

Contoh koneksi dengan database pada gaya PHP oop dengan sampel dari tabel

config.php.

// sosiologi dengan basis data
$ mysqli \u003d mysqli baru ("localhost", "nama pengguna", "kata sandi", "nama-database"); // di sini saya memasukkan data Anda secara langsung: nama pengguna, kata sandi dan nama database, bidang pertama biasanya localhost

// output kesalahan koneksi
If ($ MySQLI-\u003e Connect_Error) (
Die ("Kesalahan menghubungkan ke basis data: (" $ mysqli-\u003e connect_errno. ")". MySQLI_Connect_Error);
}

Catatan - Di mana-mana menggunakan MySQLI, bukan MySQL !!! Dan tidak seperti metode sebelumnya, panah muncul "-\u003e", yang menunjukkan bahwa ini adalah gaya OOP.

index.php.

membutuhkan_once "config.php";

// jalankan permintaan. Jika kesalahan ditampilkan
Jika ($ result \u003d $ mySQLi-\u003e Query.("Pilih Nama, Uang dari Dolg Order oleh Uang Desc Limit 5")) (

Echo "Kepada siapa aku harus turun:

";

// Pemilihan hasil kueri
Sementara ($ baris \u003d $ hasil-\u003e fetch_assoc.()) {
Echo $ baris ["nama"]. "Dengan hutang." $ Baris ["uang"]. "Rubel.
";
}

// Pembebasan memori yang digunakan
$hasil-\u003e Tutup ();

// tutup koneksi
$mySQLi-\u003e Tutup.();
}

Tugas untuk Anda - temukan perbedaan.

4) Komunikasi dengan database dengan PDO:

Ketika terhubung ke basis data MySQL, ekspresi disiapkan digunakan (dengan metode persiapan) dan sebagai hasil dari keamanan yang luar biasa dan sangat meningkatkan kecepatan.

file konfigurasi. Dari metode sebelumnya! - Sama

index.php.

// gaya PDO untuk komunikasi dengan MySQL
If ($ STMT \u003d $ MySQLi-\u003e Siapkan ("Pilih Nama, Voney dari Dolg Order dengan Uang< ? LIMIT 5")) {

$ STMT-\u003e Bind_param ("I", $ SUMMA);
$ Summa \u003d 100000;

// Jalankan eksekusi
$ STMT-\u003e Execute ();

// Pengumuman variabel untuk nilai panen
$ STMT-\u003e Bind_Result ($ col1, $ col2);

Echo "Kepada siapa aku harus turun:

";

// Pemilihan hasil kueri
Sementara ($ STMT-\u003e fetch ()) (
Echo $ col1. "Dengan hutang." $ col2. "Rubel.
";
}

// Pembebasan memori yang digunakan
$ STMT-\u003e Tutup ();

// tutup koneksi
$ MySQLi-\u003e Tutup ();

Seperti yang kita lihat, ada yang jauh lebih sulit dan perlu mempelajari PDO adalah topik yang terpisah.