PHP MySQLFungsi i: mysqli_query & mysqli_connect
⚡ Ringkasan Cerdas
MySQLMySQLi, PHP, dan metode akses basis data lainnya memungkinkan skrip PHP untuk terhubung ke basis data, menjalankan kueri, dan membaca hasilnya. Panduan ini mencakup fungsi inti mysqli, contoh CRUD lengkap, prepared statement untuk keamanan, dan metode akses alternatif PDO dan ODBC.

PHP memiliki banyak sekali fungsi bawaan untuk memanipulasi MySQL database.
Fungsi PHP mysqli_connect
Fungsi PHP mysqli_connect digunakan untuk terhubung ke sebuah MySQL server basis data.
Ia memiliki sintaksis sebagai berikut.
<?php $db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password); ?>
SINI,
- “$db_handle” adalah variabel sumber daya koneksi database.
- “mysqli_connect(…)” adalah fungsi untuk koneksi basis data PHP.
- “$db_server_name” adalah nama atau alamat IP dari server yang menampung database tersebut. MySQL Server.
- “$db_user_name” adalah nama pengguna yang valid di MySQL Server.
- “$db_password” adalah kata sandi yang valid yang terkait dengan nama pengguna di MySQL Server.
Fungsi PHP mysqli_select_db
Fungsi mysqli_select_db digunakan untuk memilih basis data.
Ia memiliki sintaksis sebagai berikut.
<?php mysqli_select_db($db_handle, $database_name); ?>
SINI,
- “mysqli_select_db(…)” adalah fungsi pemilihan database yang mengembalikan nilai benar atau salah
- “$db_handle” adalah tautan koneksi server.
- “$database_name” adalah nama database
Fungsi PHP mysqli_query
Fungsi mysqli_query digunakan untuk mengeksekusi SQL pertanyaan.
Fungsi ini dapat digunakan untuk mengeksekusi tipe kueri berikut:
- Menyisipkan
- Pilih
- Memperbarui
- Delete
Ia memiliki sintaksis sebagai berikut.
<?php mysqli_query($db_handle, $query); ?>
SINI,
- “mysqli_query(…)” adalah fungsi yang mengeksekusi query SQL.
- “$db_handle” adalah tautan koneksi server.
- “$query” adalah kueri SQL yang akan dieksekusi
Fungsi PHP mysqli_num_rows
Fungsi mysqli_num_rows digunakan untuk mendapatkan jumlah baris yang dikembalikan dari kueri pemilihan.
Ia memiliki sintaksis sebagai berikut.
<?php mysqli_num_rows($result); ?>
SINI,
- “mysqli_num_rows(…)” adalah fungsi penghitungan baris
- “$result” adalah kumpulan hasil mysqli_query
Fungsi PHP mysqli_fetch_array
Fungsi mysqli_fetch_array digunakan untuk mengambil array baris dari kumpulan hasil kueri.
Ia memiliki sintaksis sebagai berikut.
<?php mysqli_fetch_array($result); ?>
SINI,
- “mysqli_fetch_array(…)” adalah fungsi untuk mengambil array baris
- “$result” adalah hasil yang dikembalikan oleh fungsi mysqli_query.
Fungsi PHP mysqli_close
Fungsi mysqli_close digunakan untuk menutup koneksi basis data yang terbuka.
Ia memiliki sintaksis sebagai berikut.
<?php mysqli_close($db_handle); ?>
SINI,
- “mysqli_close(…)” adalah fungsi PHP yang menutup koneksi.
- “$db_handle” adalah sumber daya koneksi server.
PHP MySQL Contoh CRUD
Mari kita lihat contoh-contoh praktis yang memanfaatkan fungsi-fungsi ini. Tutorial ini mengasumsikan pengetahuan tentang... MySQL dan SQL; jika istilah-istilah ini asing bagi Anda, silakan merujuk ke panduan kami. MySQL dan tutorial SQL.
Kita akan membuat basis data sederhana bernama my_personal_contacts dengan hanya satu tabel. Hubungkan ke MySQL menggunakan alat akses favorit Anda seperti MySQL Buka Workbench atau phpMyAdmin, buat basis data bernama my_personal_contacts, lalu jalankan skrip yang ditunjukkan di bawah ini untuk membuat tabel dan memasukkan beberapa data contoh.
CREATE TABLE IF NOT EXISTS `my_contacts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `full_names` varchar(255) NOT NULL, `gender` varchar(6) NOT NULL, `contact_no` varchar(75) NOT NULL, `email` varchar(255) NOT NULL, `city` varchar(255) NOT NULL, `country` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES (1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'), (2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'), (3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'), (4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');
Membaca data dari basis data
Sekarang kita akan membuat program yang mencetak data dari basis data.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "SELECT * FROM my_contacts"; // SQL select query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Database access failed: " . mysqli_error($dbh)); $rows = mysqli_num_rows($result); // get number of rows returned if ($rows) { while ($row = mysqli_fetch_array($result)) { echo 'ID: ' . $row['id'] . '<br>'; echo 'Full Names: ' . $row['full_names'] . '<br>'; echo 'Gender: ' . $row['gender'] . '<br>'; echo 'Contact No: ' . $row['contact_no'] . '<br>'; echo 'Email: ' . $row['email'] . '<br>'; echo 'City: ' . $row['city'] . '<br>'; echo 'Country: ' . $row['country'] . '<br><br>'; } } mysqli_close($dbh); // close the database connection ?>
Menjalankan kode di atas akan menghasilkan hasil seperti yang ditunjukkan pada diagram di bawah ini.
Memasukkan catatan baru
Sekarang mari kita lihat contoh yang menambahkan data baru ke dalam tabel kita. Kode di bawah ini menunjukkan implementasinya.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)"; $sql_stmt .= " VALUES(7,8,9,10,11,12)"; $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Adding record failed: " . mysqli_error($dbh)); echo "Poseidon has been successfully added to your contacts list"; mysqli_close($dbh); // close the database connection ?>
Menjalankan kode di atas akan menghasilkan output “Poseidon telah berhasil ditambahkan ke daftar kontak Anda”. Kembali ke contoh kueri select dan ambil kontak Anda lagi untuk melihat apakah Poseidon telah ditambahkan ke daftar Anda.
Memperbarui catatan
Sekarang mari kita lihat contoh yang memperbarui data dalam basis data. Misalnya, Poseidon telah mengubah nomor telepon dan alamat emailnya.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9"; $sql_stmt .= " WHERE `id` = 5"; // SQL update query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Updating record failed: " . mysqli_error($dbh)); echo "ID number 5 has been successfully updated"; mysqli_close($dbh); // close the database connection ?>
Menghapus catatan
Sekarang mari kita lihat contoh penghapusan data dari basis data. Misalnya, Venus memiliki perintah penahanan terhadap kita, dan kita harus menghapus informasi kontaknya dari basis data kita. Database.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server if (!$dbh) die("Unable to connect to MySQL: " . mysqli_connect_error()); if (!mysqli_select_db($dbh, 'my_personal_contacts')) die("Unable to select database: " . mysqli_error($dbh)); $id = 4; // Venus's ID in the database $sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query $result = mysqli_query($dbh, $sql_stmt); // execute SQL statement if (!$result) die("Deleting record failed: " . mysqli_error($dbh)); echo "ID number $id has been successfully deleted"; mysqli_close($dbh); // close the database connection ?>
Mencegah Injeksi SQL dengan Prepared Statements
Contoh CRUD di atas membangun kueri dengan menggabungkan string. Ketika bagian mana pun dari kueri berasal dari input pengguna, ini membuka pintu bagi injeksi SQL. Pernyataan yang dipersiapkan (prepared statements) mengatasi hal ini dengan mengirimkan kueri dan data secara terpisah, sehingga input tidak akan pernah mengubah struktur kueri.
<?php $dbh = mysqli_connect('localhost', 'root', 'melody'); $stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)"); mysqli_stmt_bind_param($stmt, "ss", $name, $email); $name = 'Poseidon'; $email = 'poseidon@sea.oc'; mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt); mysqli_close($dbh); ?>
Di sini, tanda tanya hanyalah placeholder, dan bind_param mengikat nilai nama dan email dengan aman. Basis data memperlakukannya sebagai data murni, itulah sebabnya prepared statement, yang tersedia di mysqli dan PDO, adalah cara yang direkomendasikan untuk menjalankan kueri apa pun yang menggunakan input pengguna.
Objek Akses Data PHP (PDO)
PDO adalah kelas yang memungkinkan kita untuk memanipulasi berbagai mesin basis data seperti MySQL, PostgreSQL, dan MS SQL Server menggunakan antarmuka yang sama.
Kode di bawah ini menunjukkan metode akses database menggunakan objek PDO.
Catatan: kode di bawah ini mengasumsikan pengetahuan tentang bahasa SQL, array, penanganan pengecualian, dan perulangan foreach.
<?php try { $pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->exec('SET NAMES "utf8"'); $sql_stmt = "SELECT * FROM `my_contacts`"; $result = $pdo->query($sql_stmt); $result->setFetchMode(PDO::FETCH_ASSOC); $data = array(); foreach ($result as $row) { $data[] = $row; } print_r($data); } catch (PDOException $e) { echo $e->getMessage(); } ?>
SINI,
- “try{…}catch{…}” adalah blok penanganan pengecualian.
- “$pdo = new PDO(“mysql…” membuat sebuah instance objek PDO dan meneruskan driver basis data, nama server dan basis data, ID pengguna, dan kata sandi.
- “$pdo->setAttribute…” mengatur mode kesalahan PDO untuk melempar pengecualian.
- “$pdo->exec('SET NAMES…” mengatur format pengkodean
Akses Data ODBC PHP
ODBC adalah akronim dari Open Database Connectivity. Sintaks dasarnya adalah sebagai berikut.
<?php $conn = odbc_connect($dsn, $user_name, $password); ?>
SINI,
- “odbc_connect” adalah fungsi bawaan PHP.
- “$dsn” adalah nama sumber data ODBC.
- “$user_name” bersifat opsional dan digunakan untuk nama pengguna ODBC.
- “$password” bersifat opsional dan digunakan untuk kata sandi ODBC.
Contoh di bawah ini mengasumsikan Anda menggunakan Windows dan telah membuat tautan ODBC ke Northwind. Microsoft Akses basis data bernama northwind.
<?php $dbh = odbc_connect('northwind', '', ''); if (!$dbh) { exit("Connection Failed: " . $dbh); } $sql_stmt = "SELECT * FROM customers"; $result = odbc_exec($dbh, $sql_stmt); if (!$result) { exit("Error accessing records"); } while (odbc_fetch_row($result)) { $company_name = odbc_result($result, "CompanyName"); $contact_name = odbc_result($result, "ContactName"); echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>"; } odbc_close($dbh); ?>

