Mengatasi Warning: mysqli_query() expects at least 2 parameters, 1 given


Bismilllaahirrohmaanirrohiim. Bagi yang telah terbiasa menggunakan extensi mysql_* pada PHP, mungkin ketika bermigrasi menggunakan mysqli_* akan sedikit mengalami kebingungan. Karena memang terdapat sedikit perbedaan dari keduanya. Beberapa kesalahan yang umumnya terjadi ketika baru bermigrasi menggunakan mysqli adalah terdapat kesalahan seperti Warning: mysqli_query() expects at least 2 parameters, 1 given dan tulisan ini akan membahas masalah tersebut serta bagaimana mengatasinya.

Apa itu mysqli?

Bahasa pemrograman PHP merupakan salah satu bahasa pemrograman web yang sampai saat ini masih terus dikembangkan. Setiap rilis versi terbaru, bahasa pemrograman ini mengalami perbaikan dan juga penambahan fitur baru, salah satunya ialah mysqli_*. Extensi ini merupakan sebuah fitur yang digunakan berkaitan dengan database MySQL dan menggantikan extensi mysql yang lama karena memiliki beberapa kelemahan. Mysqli sendiri merupakan singkatan untuk MySQL Improved dan mulai diperkenalkan sejak PHP versi 5.

Sejak PHP rilis versi 5, penggunaan fungsi (function) mysql_* sudah diberikan warning deprecated dan sejak PHP dirilis versi 7, fungsi ini sudah dihapus (removed) sehingga sudah tidak dapat digunakan lagi, dan sebagai gantinya gunakan mysqli_* atau gunakan PDO (PHP Data Object).

Informasi rilis versi terbaru dari PHP

Beberapa variasi penggunaan extensi mysqli yang sering digunakan diantaranya mysqli_connect, mysqli_query dan mysqli_error.

Contoh dan Solusi

Berikut ini adalah contoh penggunaan fungsi mysql_* yang biasanya digunakan untuk PHP versi 5 kebawah.

<!DOCTYPE html&gt;
<html&gt;
<head&gt;
	<title&gt;Kangriyanto.Net</title&gt;
</head&gt;
<body&gt;

	<center&gt;
		<h2&gt;Data Mahasiswa</h2&gt;
		<table width="500" border="1"&gt;
			<tr&gt;
				<th&gt;No</th&gt;
				<th&gt;NIM</th&gt;
				<th&gt;Nama Mahasiswa</th&gt;
			</tr&gt;
			<?php
			$koneksi = mysql_connect('localhost', 'root', '');
			mysql_select_db('db_latihan');

			$hasil 	= mysql_query("SELECT * FROM mahasiswa") or die(mysql_error());

			$no 	= 1;
			while($data = mysql_fetch_array($hasil)): ?&gt;
				<tr&gt;
					<td&gt;<?php echo $no++; ?&gt;</td&gt;
					<td&gt;<?php echo $data['nim']; ?&gt;</td&gt;
					<td&gt;<?php echo $data['nama']; ?&gt;</td&gt;
				</tr&gt;
			<?php endwhile; ?&gt;
		</table&gt;
	</center&gt;

</body&gt;
</html&gt;

Ketika bermigrasi menggunakan mysqli_*, maka sintaks mysql_* seperti mysql_connect, mysql_select_db, mysql_query, mysql_error dan mysql_fetch_array harus diubah dan disesuaikan menjadi seperti ini:

<!DOCTYPE html&gt;
<html&gt;
<head&gt;
	<title&gt;Kangriyanto.Net</title&gt;
</head&gt;
<body&gt;

	<center&gt;
		<h2&gt;Data Mahasiswa</h2&gt;
		<table width="500" border="1"&gt;
			<tr&gt;
				<th&gt;No</th&gt;
				<th&gt;NIM</th&gt;
				<th&gt;Nama Mahasiswa</th&gt;
			</tr&gt;
			<?php
			$koneksi = mysqli_connect('localhost', 'root', '', 'db_latihan');

			$hasil 	= mysqli_query($koneksi, "SELECT * FROM mahasiswa") or die(mysqli_error($koneksi));

			$no 	= 1;
			while($data = mysqli_fetch_array($hasil)): ?&gt;
				<tr&gt;
					<td&gt;<?php echo $no++; ?&gt;</td&gt;
					<td&gt;<?php echo $data['nim']; ?&gt;</td&gt;
					<td&gt;<?php echo $data['nama']; ?&gt;</td&gt;
				</tr&gt;
			<?php endwhile; ?&gt;
		</table&gt;

	</center&gt;
</body&gt;
</html&gt;

Yang perlu teman-teman perhatikan ialah pada fungsi mysql_connect yang awalnya terdiri dari 3 parameter, sekarang teman-teman bisa gunakan 4 parameter. Selain itu, fungsi mysql_query menjadi mysqli_query, dan yang awalnya hanya 1 parameter sekarang menjadi 2 parameter.

mysql_query("SELECT * FROM mahasiswa");

Diubah menjadi:

mysqli_query($koneksi, "SELECT * FROM mahasiswa");

Jika tidak diubah, maka akan muncul peringatan Warning: mysqli_query() expects at least 2 parameters, 1 given yang artinya, mysqli_query memerlukan setidaknya 2 parameter, sedangkan yang ditulis hanya 1 saja. Berikut ini adalah contohnya.

Warning: mysqli_query() expects at least 2 parameters, 1 given saat mysqli_query hanya 1 parameter

Perlu diperhatikan pula, fungsi (function) mysqli_error juga sekarang harus diberikan 1 parameter.

mysql_error();

diubah menjadi:

mysqli_error($koneksi);
Tampilan ketika berhasil migrasi ke mysqli_*

Nah, demikianlah cara mengatasi Notice Warning: mysqli_query() expects at least 2 parameters, 1 given. Semoga bermanfaat dan keep coding 🙂

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.