Tutorial kali ini akan membahas bagaimana mengelola database dari script PHP. Selain itu, Anda juga akan belajar cara INSERT data ke database menggunakan PHP. Untuk menginput data ke database MySQL dapat dilakukan dengan dua metode yaitu MySQLi dan PDO. Namun, sebelum melanjutkan tutorial ini, ada baiknya Anda mengakses konsol panel hosting Anda terlebih dahulu
Berbagai versi PHP dan fasilitas konfigurasi PHP bisa Anda dapatkan hanya dengan berlangganan web hosting di Hostinger. Nikmati juga bantuan 24/7 dan jaminan uang kembali 30 hari
Hosting PHP
Buat Tabel (Opsional)
Buat tabel dulu. Langkah-langkahnya sendiri sangat sederhana. Anda sebaiknya hanya menggunakan phpMyAdmin yang ada di panel kontrol hosting. Karena pada tutorial sebelumnya sudah dibahas langkah-langkah membuat database MySQL, pada tutorial kali ini tidak akan dijelaskan lebih lanjut
Setelah masuk ke halaman phpMyAdmin, Anda akan melihat tampilan seperti ini
Kami akan membuat tabel bernama Siswa untuk database u266072517_name. Untuk membuat tabel baru, klik tombol Buat Tabel. Setelah itu, halaman baru akan muncul di mana Anda dapat memasukkan semua informasi yang Anda butuhkan ke dalam tabel
Setup ini merupakan setup yang paling mudah dilakukan jika ingin membuat tabel. Untuk informasi lengkap mengenai struktur tabel/database dan jenis pengaturan yang dapat diterapkan pada kolom, baca panduan phpMyAdmin
Berikut adalah penjelasan fungsi dari masing-masing kolom yang akan kita gunakan
- Nama – Nama kolom, akan ditampilkan di bagian atas tabel
- Ketik – Pilih jenis kolom. Misalnya kita memilih varchar karena kita ingin memasukkan tipe string berupa nama (yang tentunya terdiri dari huruf bukan angka)
- Panjang/Nilai – Untuk menentukan panjang maksimum entri yang dapat Anda buat di kolom
- Indeks – Kami menggunakan indeks "Utama" untuk kolom "ID". Lebih baik membuat kolom ID saat membuat tabel. Kolom ini berfungsi untuk menghitung entri tabel dan diperlukan saat Anda ingin mengonfigurasi hubungan intertabel. Kami juga menandai "A_I" yang berarti Auto Increment. Secara otomatis, kolom akan menghitung entri (1, 2, 3, 4…)
Klik Save untuk menyimpan tabel yang telah berhasil dibuat
Menulis kode untuk Input Database dengan PHP
metode MySQLi
Lakukan koneksi ke database terlebih dahulu. Untuk caranya, Anda dapat membaca di tutorial kami. Setelah itu, Anda dapat melanjutkan dengan kueri SQL INSERT. Berikut adalah contoh kode dengan koneksi dasar dan metode penyisipan
<?php $servername = "mysql.hostinger.co.uk"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; // Create connection $conn = mysqli_connect($servername, $username, $password, $database); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "Connected successfully"; $sql = "INSERT INTO Students (name, lastname, email) VALUES ('Thom', 'Vial', 'thom.v@some.com')"; if (mysqli_query($conn, $sql)) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); } mysqli_close($conn); ?>Bagian pertama dari kode (3-18 baris) adalah koneksi sebenarnya ke database. Untuk arti dari masing-masing kode sudah kita bahas sebelumnya. Jika Anda ingin menggali informasi serupa, Anda dapat merujuk ke artikel kami tentang cara terhubung ke database
Oke, mari kita mulai dari baris kode 19
$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Thom', 'Vial', 'thom.v@some.com')";_Baris diatas adalah baris yang paling penting dalam baris kode yang kita gunakan. Baris ini bertanggung jawab atas semua yang akan kita pelajari bersama dalam tutorial ini - input database dengan PHP. INSERT INTO adalah pernyataan yang berfungsi untuk menambahkan data ke dalam tabel database yang ditentukan. Misalnya, kami akan menambahkan data ke tabel Siswa
Di dalam tanda kurung, ada kolom tabel yang ingin kita tambahkan nilainya. (nama, nama belakang, email). Data akan ditambahkan sesuai urutan yang telah ditentukan. Jika kita menulis (email, lastname, name), maka urutan nilainya akan berubah
Setelah INSERT INTO, ada pernyataan NILAI. Dalam pernyataan ini, kami memasukkan nilai ke kolom yang ditentukan sebelumnya. Dengan demikian, setiap kolom mewakili nilai yang telah dibuat. Misalnya pada kolom yang telah kita buat. nama = Tes, nama belakang = Tes, email = Tes@tes. com
Hal penting lainnya adalah karena kita hanya menjalankan kueri SQL menggunakan kode PHP, kueri SQL harus diatur di antara tanda kutip. Misalnya, apa pun yang ditempatkan di antara tanda kutip dan setelah $sql = adalah kueri SQL
Baris kode berikutnya (baris 20-22) memeriksa apakah kueri berhasil dijalankan atau tidak
if (mysqli_query($conn, $sql)) { echo "New record created successfully"; }Baris kode terakhir (baris 22-24) menampilkan pesan kesalahan jika kueri tidak berhasil dijalankan
else { echo "Error: " . $sql . "<br>" . mysqli_error($conn); }Metode Objek Data PHP (PDO).
Sama seperti opsi 1, hal pertama yang harus dilakukan adalah membuat koneksi ke database. Di opsi 2, koneksi dilakukan dengan membuat objek PDO baru - baca tutorial kami sebelumnya untuk informasi lebih lengkap. Karena koneksi ke database MySQL adalah objek PDO, Anda harus menggunakan berbagai 'metode' PDO (fungsi apa pun yang merupakan bagian dari objek apa pun) untuk membuat dan menjalankan kueri. Metode objek akan terlihat seperti ini
$the_Object->the_Method();_Dengan PDO, Anda dapat 'membangun' kode SQL sebelum dijalankan. SQL diperiksa dan 'diperbaiki' sebelum benar-benar diaktifkan. Serangan injeksi SQL yang disederhanakan dapat diaktifkan hanya dengan mengetikkan kode SQL ke dalam bidang di formulir. Sebagai contoh
// User writes this in the username field of a login form john"; DROP DATABASE user_table; // The final query becomes this "SELECT * FROM user_table WHERE username = john"; DROP DATABASE user_table;Karena ada kode SQL yang benar secara sintaksis, maka titik koma menjadikan DROP DATABASE user_table sebagai kueri SQL baru, dan tabel pengguna Anda dihapus. Pernyataan yang disiapkan tidak akan mengizinkan karakter ”dan ;
Jika Anda ingin mengirim atau menerima data dari database dengan PDO, sebaiknya gunakan pernyataan yang sudah disiapkan
Untuk menggunakan pernyataan yang telah disiapkan, Anda harus menulis variabel baru yang memanggil metode persiapan() dari objek database
Ketika kode sudah benar
<?php $servername = "mysql.hostinger.com"; $database = "u266072517_name"; $username = "u266072517_user"; $password = "buystuffpwd"; $sql = "mysql:host=$servername;dbname=$database;"; $dsn_Options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]; // Create a new connection to the MySQL database using PDO, $my_Db_Connection is an object try { $my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options); echo "Connected successfully"; } catch (PDOException $error) { echo 'Connection error: ' . $error->getMessage(); } // Set the variables for the person we want to add to the database $first_Name = "Thom"; $last_Name = "Vial"; $email = "thom.v@some.com"; // Here we create a variable that calls the prepare() method of the database object // The SQL query you want to run is entered as the parameter, and placeholders are written like this :placeholder_name $my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Students (name, lastname, email) VALUES (:first_name, :last_name, :email)"); // Now we tell the script which variable each placeholder actually refers to using the bindParam() method // First parameter is the placeholder in the statement above - the second parameter is a variable that it should refer to $my_Insert_Statement->bindParam(:first_name, $first_Name); $my_Insert_Statement->bindParam(:last_name, $last_Name); $my_Insert_Statement->bindParam(:email, $email); // Execute the query using the data we just defined // The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your own messages here if ($my_Insert_Statement->execute()) { echo "New record created successfully"; } else { echo "Unable to create record"; } // At this point you can change the data of the variables and execute again to add more data to the database $first_Name = "John"; $last_Name = "Smith"; $email = "john.smith@email.com"; $my_Insert_Statement->execute(); // Execute again now that the variables have changed if ($my_Insert_Statement->execute()) { echo "New record created successfully"; } else { echo "Unable to create record"; }_Pada baris 28, 29, dan 30, kita menggunakan metode bindParam() dari objek database. Ada juga metode bindValue() yang sama sekali berbeda
- bindParam() – Metode ini mengevaluasi data saat metode eksekusi() dijalankan. Saat pertama kali menjalankan metode execution(), skrip melihat bahwa $first_Name sesuai dengan "Thom", mengikat nilainya, dan menjalankan kueri. Saat menjalankan metode eksekusi() kedua, skrip melihat bahwa $first_Name sekarang sesuai dengan "John", mengikat nilai, dan menjalankan kueri lagi dengan nilai baru. Satu hal yang harus Anda ingat, kami hanya membuat kueri satu kali dan menggunakannya lagi dengan data berbeda di titik berbeda dalam skrip
- bindValue() – Metode ini mengevaluasi data segera setelah bindValue() dijalankan. Karena nilai $first_Name telah disetel ke "Thom" pada saat bindValue() dijalankan, nilai tersebut akan digunakan setiap kali metode execution() dipanggil untuk $my_Insert_Statement
Kami menggunakan kembali variabel $first_Name dan membuat nilai baru untuk kedua kalinya. Jika Anda memeriksa database setelah menjalankan skrip ini, maka Anda memiliki dua nama yang telah ditentukan, meskipun variabel $first_Name setara dengan "John" yang terletak di akhir skrip. Perlu diingat, PHP mengevaluasi seluruh skrip sebelum benar-benar menjalankannya
Saat Anda memperbarui skrip untuk mengganti bindParam dengan bindValue, Anda harus memasukkan dua kali ke MySQL "Thom Vial" di database dan John Smith tidak akan disertakan
Memastikan Masalah dan Kesalahan Berhasil Diatasi
Jika kueri berhasil dijalankan dan dimasukkan ke dalam database MySQL, maka kita akan melihat pesan ini
Connect Successfully New record created successfullyMengatasi kesalahan umum
MySQLi
Umumnya, jika terjadi kesalahan, pesan kesalahan akan segera ditampilkan. Misalnya terjadi error pada syntax, maka muncul pesan ini
Connect successfully Error: INSERT INTO students {name, lastname, email} VALUES ('Test', 'Testing', 'Testing@testing.com') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{name, lastname, email} VALUES ('Test', 'Testing', 'Test@testingcom')' at line 1"_Seperti yang bisa kita lihat, tidak ada kesalahan apapun di bagian pertama kode. Koneksi yang dibuat berhasil diaktifkan. Namun, kueri SQL berhenti
"Error: INSERT INTO Students {name, lastname, email} VALUES ('Thom', 'Vial', 'thom.v@some.com')_Anda memiliki kesalahan dalam sintaks SQL Anda; . v@beberapa. com')' pada baris 1″
Memiliki kesalahan sintaksis membuat skrip gagal dijalankan. Kesalahannya adalah
$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Thom', 'Vial', 'thom.v@some.com')";_0Terlihat bahwa kita menggunakan kurung kurawal bukan kurung biasa. Tentu saja penulisan ini tidak akurat dan menyebabkan script tidak berjalan sebagaimana mestinya sehingga muncul pesan error
PDO
Sejalan 7 koneksi PDO, mode kesalahan diatur untuk menampilkan semua pengecualian. Jika Anda tidak menyertakan mode kesalahan ini dan jika kueri gagal, Anda tidak akan mendapatkan pesan kesalahan sama sekali. Namun, ketika mode kesalahan disertakan, maka Anda dapat mengetahui di mana kesalahan itu terjadi. Biasanya mode kesalahan hanya digunakan saat Anda sedang mengembangkan skrip karena dapat mengekspos nama database dan tabel, yang sebenarnya ingin Anda sembunyikan dari siapa pun yang ingin mengakses data Anda. Jika Anda tidak sengaja mengetikkan kurung kurawal dan bukan kurung biasa, maka akan muncul tampilan error seperti ini
$sql = "INSERT INTO Students (name, lastname, email) VALUES ('Thom', 'Vial', 'thom.v@some.com')";_1Masalah lain yang mungkin Anda alami
- Salah kolom (kolom tidak muncul atau ada kesalahan penulisan)
- Salah satu tipe nilai dipindahkan ke tipe kolom lain. Misalnya jika kita menulis angka 47 pada kolom Nama, maka akan muncul pesan kesalahan. Secara default, 47 adalah nilai string. Namun jika kita menambahkan angka di antara tanda kutip, misalnya "47", maka tidak akan ada pesan kesalahan karena angka yang kita maksud akan ditambahkan ke kolom sebagai string
- Memasukkan data ke dalam tabel yang tidak ada atau terjadi kesalahan penulisan pada tabel
Baca tutorial mengatasi pesan error atau cek error_log agar semua error di atas bisa diperbaiki dengan mudah
Data entri yang berhasil ditambahkan dapat dilihat di database kami. Berikut adalah contoh tabel, tempat kami menambahkan data, jika dilihat melalui phpMyAdmin
Kesimpulan
Sekarang Anda sudah tahu cara menginput data ke database dengan php menggunakan MySQLi dan PDO. Selain itu, Anda sudah mengetahui cara mengatasi error koneksi yang sering terjadi. Jika saat ini Anda sedang belajar tentang coding atau membuat website, maka Anda harus mengetahui cara memasukkan data ke dalam database menggunakan PHP
Penulis
Ariata C
Ariata suka menulis dan menerjemahkan, dan saat ini bekerja sebagai penerjemah di Hostinger Indonesia. Melalui artikel dan tutorial yang dipublikasikan di blog Hostinger, Ariata ingin berbagi ilmu tentang website, WordPress, dan hal-hal terkait hosting lainnya kepada para pembaca.