Tidak juga!
Contoh pertama Anda menggunakan fungsi yang telah dihapus dari PHP bertahun-tahun yang lalu. mysql_query()
tidak ada dan tidak boleh digunakan lagi. Alasan mengapa itu dihapus adalah Anda harus menggunakan pernyataan yang sudah disiapkan sebagai gantinya. Mereka disediakan oleh ekstensi mysqli atau PDO.
Contoh kedua Anda lebih baik, tetapi terlalu berantakan.
- Anda tidak boleh
echo mysqli_query
. Tidak ada yang berguna untuk dicetak dari fungsi ini. - Biasakan menggunakan pernyataan yang disiapkan setiap saat dan gunakan placeholder untuk data variabel. Sampai sekarang kueri Anda konstan, tetapi menggunakan pernyataan yang disiapkan masih merupakan praktik yang baik jika Anda perlu menambahkan parameter nanti.
- Hindari penggunaan fungsi seperti
mysqli_fetch_array()
. Mengulang opsi hasil satu per satu berantakan dan jarang berguna. - Jangan pernah memeriksa nilai kembalian panggilan mysqli. Tidak ada gunanya. Aktifkan pelaporan kesalahan sebagai gantinya. Lihat Bagaimana cara mendapatkan pesan kesalahan di MySQLi?
- Selalu atur rangkaian karakter yang benar. Seharusnya
utf8mb4
99% dari waktu. - Kueri SQL dapat disimpan dalam variabel terpisah, tapi apa gunanya? Anda hanya akan meneruskannya sebagai argumen ke
query
fungsi. Tidak perlu menggunakan variabel perantara. - Jangan gunakan mysqli. Anda harus menggunakan PDO sebagai gantinya. Jika Anda harus menggunakan mysqli, buatlah fungsi atau kelas pembungkus sederhana untuk tujuan ini dan jalankan fungsi generik Anda alih-alih bermain-main dengan fungsi mysqli.
Berikut adalah contoh bagaimana saya akan melakukannya. Pertama saya mengaktifkan pelaporan kesalahan untuk mysqli, saya membuka koneksi dan mengatur charset. Lalu saya mendeklarasikan fungsi yang mengambil 3 parameter dan mengembalikan array. Parameter pertama adalah koneksi database Anda yang baru saja Anda buka. Kedua adalah kueri SQL Anda dengan placeholder jika ada. Ketiga adalah opsional dan merupakan array nilai yang akan diikat ke placeholder sebagai parameter. Fungsi ini berfungsi untuk semua jenis kueri SQL. Sisa kode menjadi sangat sederhana.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = new mysqli("myserver.com", "test", "sunil7117", "test");
$link->set_charset('utf8mb4'); // always set the charset
/**
* Executes an SQL query on the database.
*
* @param \mysqli $mysqli
* @param string $query e.g. SELECT * FROM users WHERE username=?
* @param array $params An array of parameters to be bound in the given order to the placeholders in SQL
* @return array
*/
function prepared_query(\mysqli $mysqli, string $query, array $params = []): array {
$stmt = $mysqli->prepare($query);
if ($params) {
$stmt->bind_param(str_repeat("s", count($params)), ...$params);
}
$stmt->execute();
if ($result = $stmt->get_result()) {
return $result->fetch_all(MYSQLI_BOTH);
}
return null;
}
prepared_query($link, "UPDATE user SET email='[email protected]' WHERE email='[email protected]' LIMIT 1");
echo "<br>";
$result = prepared_query($link, "SELECT * FROM user");
echo "welcome to database<br>";
if ($result) {
$row = $result[0];
echo "my E-mail id is <strong> ".$row[1]. "</strong> and passoword is <strong>".$row[2]."</strong>";
}