Fungsi mysqli_query di PHP: Cara Menjalankan Query SQL ke MySQL

| | | PHP
Fungsi mysqli_query di PHP: Cara Menjalankan Query SQL ke MySQL

Saat kamu mulai belajar PHP dan MySQL, hampir pasti yang pertama kamu coba adalah mengirim perintah SQL dari PHP ke database. Fungsinya adalah mysqli_query — dia yang menjalankan perintah SELECT, INSERT, UPDATE, atau DELETE ke server MySQL lewat koneksi yang sudah dibuka.

Di artikel ini saya jelaskan mysqli_query dari awal: pengertian, parameter, cara pakai untuk tiap jenis query, sampai cara menangani error. Polanya sama seperti waktu saya mulai belajar dulu — mulai dari satu query SELECT, lalu melebar ke INSERT, UPDATE, sampai DELETE.

Pengertian mysqli_query

mysqli_query adalah fungsi PHP yang digunakan untuk menjalankan perintah SQL ke database MySQL menggunakan koneksi yang telah dibuat sebelumnya dengan mysqli_connect().

Cara Menggunakan mysqli_query

Urutan dasarnya selalu begini:

  1. Buat koneksi ke database dengan mysqli_connect().
  2. Jalankan perintah SQL dengan mysqli_query($con, $sql).
  3. Jika query SELECT, hasilnya kamu olah dengan mysqli_fetch_assoc().
  4. Tutup koneksi dengan mysqli_close().

Contoh paling sederhana untuk membaca data:

// membuat koneksi ke database
$con = mysqli_connect("localhost", "username", "password", "database");

// mengirim query ke database
$result = mysqli_query($con, "SELECT * FROM nama_tabel");

// menampilkan hasil query
while ($row = mysqli_fetch_assoc($result)) {
    echo $row['kolom1'] . " " . $row['kolom2'];
    echo "<br>";
}

// menutup koneksi ke database
mysqli_close($con);

Parameter mysqli_query

Fungsi mysqli_query punya dua parameter wajib dan satu opsional:

ParameterWajib?Keterangan
$mysqliYaKoneksi dari mysqli_connect() atau objek new mysqli()
$queryYaString SQL yang akan dijalankan
$result_modeTidakMYSQLI_STORE_RESULT (default), MYSQLI_USE_RESULT, MYSQLI_ASYNC

Koneksi

Koneksi adalah hasil mysqli_connect() yang menyimpan host, username, password, dan nama database:

$con = mysqli_connect("localhost", "username", "password", "database");

Kalau kamu memakai object oriented style, koneksinya sama saja:

$mysqli = new mysqli("localhost", "username", "password", "database");
$result = $mysqli->query("SELECT * FROM nama_tabel");

Query

Parameter kedua adalah string SQL. Bisa query apapun: SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, dan lainnya.

$result = mysqli_query($con, "SELECT * FROM nama_tabel");

Result mode

resultmode menentukan cara hasil query disimpan di memori. Nilainya:

  • MYSQLI_STORE_RESULT (default) — hasil diambil semua sekaligus ke memori. Cocok untuk data yang tidak terlalu besar.
  • MYSQLI_USE_RESULT — hasil diambil per baris saat kamu panggil mysqli_fetch_assoc(). Hemat memori, tapi kamu tidak bisa menjalankan query lain di koneksi yang sama sampai semua baris habis dibaca atau hasilnya dibebaskan.
  • MYSQLI_ASYNC — query dijalankan tanpa menunggu selesai, kamu perlu memeriksa statusnya dengan mysqli_poll(). Dipakai untuk query paralel.
$result = mysqli_query($con, "SELECT * FROM nama_tabel", MYSQLI_USE_RESULT);

Untuk query yang tidak menghasilkan data (INSERT, UPDATE, DELETE), mysqli_query mengembalikan true jika berhasil.

Contoh Penggunaan mysqli_query

INSERT (menambahkan data)

<?php
// membuat koneksi ke database
$con = mysqli_connect("localhost", "username", "password", "database");

// membuat query untuk menambahkan data ke tabel
$sql = "INSERT INTO nama_tabel (kolom1, kolom2, kolom3) VALUES ('nilai1', 'nilai2', 'nilai3')";

// mengeksekusi query dan menyimpan hasilnya dalam variabel result
$result = mysqli_query($con, $sql);

// menutup koneksi ke database
mysqli_close($con);

Pada contoh di atas, query dijalankan dengan mysqli_query dan hasilnya disimpan di $result. Untuk INSERT, $result bernilai true jika berhasil dan false jika gagal.

UPDATE dan DELETE

$sql = "UPDATE nama_tabel SET kolom1 = 'nilai_baru' WHERE id = 1";
mysqli_query($con, $sql);

$sql = "DELETE FROM nama_tabel WHERE id = 1";
mysqli_query($con, $sql);

Satu hal yang sering saya tekankan: untuk query UPDATE atau DELETE, selalu sertakan WHERE. Saya pernah lupa dan semua baris di tabel keupdate — pelajaran yang tidak mau kamu ulangi.

Apa bedanya mysqli_query dengan mysql_query?

mysql_query adalah fungsi di ekstensi mysql yang merupakan pendahulu mysqli. Ekstensi mysql sudah usang (deprecated) sejak PHP 5.5 dan dihapus total di PHP 7.0. Jadi di PHP versi sekarang, mysql_query tidak ada lagi — yang dipakai adalah mysqli_query atau PDO.

Perbedaan utama:

  • mysql_query (ekstensi mysql) — sudah tidak ada di PHP 7 ke atas.
  • mysqli_query (ekstensi mysqli) — aktif di semua versi PHP modern, mendukung prepared statement.
  • PDO — alternatif lain yang juga mendukung banyak database, bukan cuma MySQL.

Cara Menangani Error mysqli_query

mysqli_query mengembalikan false jika query gagal. Untuk melihat penyebabnya, gunakan mysqli_error():

<?php
// membuat koneksi ke database
$con = mysqli_connect("localhost", "username", "password", "database");

// mengeksekusi query dan menyimpan hasilnya dalam variabel result
$result = mysqli_query($con, "SELECT * FROM tabel_yang_tidak_ada");

// menampilkan pesan error jika terjadi
if (!$result) {
    printf("Error: %s\n", mysqli_error($con));
    exit();
}

// menutup koneksi ke database
mysqli_close($con);

Error umum yang sering muncul: nama tabel atau kolom salah ketik, koneksi terputus, atau query menggabungkan string dari input user tanpa escape. Untuk kasus terakhir, lebih aman pakai prepared statement daripada menyusun query manual.

FAQ — Pertanyaan Umum

Apa itu mysqli_query di PHP?

mysqli_query adalah fungsi PHP untuk menjalankan perintah SQL (SELECT, INSERT, UPDATE, DELETE) ke database MySQL menggunakan koneksi mysqli yang sudah dibuat dengan mysqli_connect().

Berapa parameter fungsi mysqli_query?

mysqli_query memiliki dua parameter wajib: koneksi dari mysqli_connect() dan string query SQL. Ada satu parameter opsional: resultmode (MYSQLI_STORE_RESULT default, MYSQLI_USE_RESULT, atau MYSQLI_ASYNC).

Kenapa mysqli_query dihapus di PHP 7.0?

Yang dihapus di PHP 7.0 adalah ekstensi mysql (fungsi mysql_query tanpa huruf i), bukan mysqli_query. Ekstensi mysql sudah usang sejak PHP 5.5 dan akhirnya dihapus di PHP 7.0, sehingga semua fungsi mysql_* tidak bisa dipakai lagi.

Apa yang harus dilakukan jika mysqli_query menghasilkan error?

Cek nilai baliknya: mysqli_query mengembalikan false jika query gagal. Untuk melihat pesan errornya gunakan mysqli_error($con) atau mysqli_errno($con).

Kesimpulan

mysqli_query adalah fungsi yang digunakan untuk menjalankan perintah SQL ke database MySQL menggunakan koneksi yang telah dibuat sebelumnya. Fungsi ini sangat berguna dalam membuat aplikasi web yang membutuhkan interaksi dengan database.

Kalau tiga parameter tadi sudah kamu pahami — koneksi, query, dan result mode — sisanya tinggal latihan. Mulai dari SELECT sederhana, tambahkan WHERE, lalu coba INSERT dan UPDATE. Itu urutan yang menurut saya paling nyaman dipelajari, dan paling sering dipakai di project sungguhan.

Pertanyaan yang Sering Diajukan

Apa itu mysqli_query di PHP?

mysqli_query adalah fungsi PHP untuk menjalankan perintah SQL (SELECT, INSERT, UPDATE, DELETE) ke database MySQL menggunakan koneksi mysqli yang sudah dibuat dengan mysqli_connect().

Berapa parameter fungsi mysqli_query?

mysqli_query memiliki dua parameter wajib: koneksi dari mysqli_connect() dan string query SQL. Ada satu parameter opsional: resultmode (MYSQLI_STORE_RESULT default, MYSQLI_USE_RESULT, atau MYSQLI_ASYNC).

Kenapa mysqli_query dihapus di PHP 7.0?

Yang dihapus di PHP 7.0 adalah ekstensi mysql (fungsi mysql_query tanpa huruf i), bukan mysqli_query. Ekstensi mysql sudah usang sejak PHP 5.5 dan akhirnya dihapus di PHP 7.0, sehingga semua fungsi mysql_* tidak bisa dipakai lagi.

Apa yang harus dilakukan jika mysqli_query menghasilkan error?

Cek nilai baliknya: mysqli_query mengembalikan false jika query gagal. Untuk melihat pesan errornya gunakan mysqli_error($con) atau mysqli_errno($con).

Sigit Nurhanafi avatar
Full-stack developer & technical writer. Berpengalaman di PHP, Laravel, NodeJS, MySQL, dan Python. Aktif menulis tutorial pemrograman dan maintaining open-source projects di PemburuKode sejak 2021.