As mysql_real_escape_string is now deprecated, I have to change one function on the site that is using it. For the life of me, I can't figure out proper mysqli or pdo code to use. Maybe someone can guide me at the right direction. This is how it currently looks.
if (isset($_GET['btnSearch']) && !empty($_GET['txtSearch'])) { $txtSearch = trim(mysql_real_escape_string($_GET['txtSearch'])); if (preg_match("/^(?i)BAW[0-9]+/", $txtSearch)) { $pilot->pilot_num = strtoupper($txtSearch); } else { $pilot->name = $txtSearch; } }Thank you all.
OK.. Langsung Saja Kita ke penjelasan code dari Mysql_real_escape string , biasanya kita menampung data dari method POST dan kita simpan dalam variabel akan berbentuk seperti ini :
//Misalkan username dan password didapatkan dari $_POST$username = $_POST['username'];
$password = $_POST['password'];
Jika kita gunakan fungsi mysql_real_escape_string()
//Misalkan username dan password didapatkan dari $_POST$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
Sedikit perbedaan jika kita menggunakan MYSQLi , kita harus menambahkan koneksi-Nya
//Misalkan username dan password didapatkan dari $_POST$username = mysqli_real_escape_string($koneksi, $_POST['username']);
$password = mysqli_real_escape_string($koneksi, $_POST['password']);
Nah.. Untuk Contoh penggunaan dalam query , Berikut ini adalah contoh penggunaanya :
<?php$koneksi=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$username = mysqli_real_escape_string($koneksi, $_POST['username']);
$password = mysqli_real_escape_string($koneksi, $_POST['password']);
$sql="INSERT INTO Users (username,password)
VALUES ('$username', '$password')";
if (!mysqli_query($koneksi,$sql)) {
die('Error: ' . mysqli_error($koneksi));
}
echo "1 record added";
mysqli_close($koneksi);
?>
Berikut adalah cara klasik dan aman untuk menggunakan fungsi ini sebagai pembersih masukan untuk parameter string.
User input (attack attempt).a' OR 'a'='a
Sanitizing input.
$param = mysql_real_escape_string($_GET['n']);
Query Yang Dihasilkan.
SELECT id FROM products WHERE name='a\' OR \'a\'=\'a'
Karena contoh terakhir diamankan dengan SQL INJECTION, kueri yang dihasilkan tidak akan menghasilkan apa-apa.Menggunakan mysql_real_escape_string merupakan cara sederhana untuk mengamankan aplikasi terhadap SQL INJECTION, namun ini jauh dari kata yang sempurna. Setiap kali fungsi ini digunakan untuk membersihkan data,Namun mysql_real_escape_string, ini akan memperlambat server database Anda Jika digunakan dalam bentuk besar atau banyak.
The real_escape_string() / mysqli_real_escape_string() function escapes special characters in a string for use in an SQL query, taking into account the current character set of the connection.
This function is used to create a legal SQL string that can be used in an SQL statement. Assume we have the following code:
Pada kesempatan kali ini saya akan memberikan contoh penggunaan mysql_real_escape_string yang bisa kita buatkan dalam sebuah file kemudian diincludekan di setiap halaman yang berhubungan dengan query di mysql. Tujuannya tentu menghindari perintah – perintah injeksi untuk query mysql kita.
Sebelumnya kita buatkan sebuah file dengan nama cekIsi.php kemudian include-kan file ini disetiap halaman yang mengeksekusi query mysql.
Fungsi real_escape_string() / mysqli_real_escape_string() digunakan untuk lolos dari karakter khusus dalam string untuk digunakan dalam kueri SQL, dengan mempertimbangkan kumpulan karakter saat ini dari koneksi.
Fungsi ini digunakan untuk membuat string SQL legal yang dapat digunakan dalam pernyataan SQL. Asumsikan kita memiliki kode berikut:
Cara Cepat dan Mudah Convert MySQL ke MySQLi
- Dengan Menggunakan NotePad++
- Dengan Menggunakan Sublime Text
- Dengan script MySQLConverterTool
Kita akan bahas satu persatu cara mengubah mysql ke mysqli, pertama yakni dengan notepad++. sebenarnya ini intinya search dan replace saja.
1. Dengan Menggunakan NotePad++
1. Pertama, buka dulu lokasi folder yang akan kita ubah.
2. Masukkan dikolom pencarian (*.php) tanpa kurung (untuk pengguna windows)
3. Select All (CTRL+A) , klik kanan open with notepad++
4. CTRL+H Find dan Replace
Perhatian, jika disimak pada gambar di atas, kita baru saja mereplace function mysql_affected_rows
dengan function mysqli_affected_rows yang mempunyai parameter ($link). Variabel $link ini adalah link koneksi kedalam database, lihat script koneksi.php diatas.
Selanjutnya, cari lagi function mysql yang sudah ada di daftar di atas dan replace seperti gambar. Dan yang terakhir jangan lupa simpan
5. SAVE ALL (CTRL+SHIFT+S)
2. Dengan Menggunakan Sublime Text
Dengan menggunakan sublime, ini menurut saya lebih enak lagi, silahkan simak caranya berikut ini:
1. Buka dulu sublime
2. Klik menu File -> Open Folder
3. Cari lokasi folder, kemudian Select Folder
4. Klik menu Find -> Find in Files
5. Silahkan Search dan Replace
6. Simpan, Klik File -> Save All
3. Dengan script MySQLConverterTool
Ini sepertinya lebih gampang lagi alias lebih mudah da simple. Caranya
1. Download MySQLConverterTool
2. Ekstrak kedalam folder root anda (htdoc) xampp
3. Akses dengan cara localhost/namafolder_MySQLConverterTool, ENTER
5. Copy direktori project kalian yang masih menggunakan PHP MySQL dan Paste ke kolom Directory lalu abaikan untuk yang lain. Kecuali untuk pilihan Update files? Pilih yes dan secara otomatis Backup files? Tercentang (Ini rekomendasi aja apabila kalian masih butuh yang lama).
Dan file yang di backup tadi apabila nama file sebelumnya config.php maka akan berubah menjadi config.php.org.
6. Klik Start the conversion > dan tunggu beberapa saat hingga proses selesai. Apabila ada keterangan warning silahkan diperbaiki secara manual. Karena disitu akan diberi petunjuk, walaupun pada dasarnya ketika dijalankan web aplikasi kalian tidak terjadi apa-apa (Rekomendasi diperbaiki untuk jaga-jaga).
7. Done....
Demikian bagaimana cara mengubah mysql ke mysqli, semoga teman-teman tidak ada kendala. Silahkan dicoba. dan untuk kamu yang suka copassss, kamuuu ya kamuu, jangan kopas semuanya lahhh, saya selaku admin sedot code sudah begitu capek menghapus link copasan kalian dari google.