$nama = mysql_real_escape_string($_POST['nama']); $komentar = mysql_real_escape_string($_POST['komentar']); $q = mysql_query("INSERT INTO komentar (nama,komentar) VALUES ("$nama", "$komentar")");
Pada query di atas, jika komentar berisi karakter petik atau kutip, begitu diambil lagi akan menampilkan petik atau kutip itu dengan menggunakan backslash (\), misal kata jum'at akan ditampilkan menjadi jum\'at.
Pada php versi baru (5 ke atas), kita sebaiknya menggunakan MySQL prepare statement. Prepared statement memberikan pengamanan dari injeksi dan string. Prepared statement digunakan untuk mengeksekusi statement query yang sama atau mirip berulang-ulang dengan efisiensi tinggi. Dengan fitur ini, kita cukup mengirimkan query sebanyak satu kali kemudian kita dapat mengeksekusinya dengan hanya mengirim parameter-parameternya saja sehingga waktu eksekusi lebih cepat. Contoh penggunaan prepared statement dari php.net:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) { | |
printf("Connect failed: %s\n", mysqli_connect_error()); | |
exit(); | |
}$city = "Amersfoort";/* create a prepared statement */if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) { | |
/* bind parameters for markers */ | |
$stmt->bind_param("s", $city); | |
/* execute query */ | |
$stmt->execute(); | |
/* bind result variables */ | |
$stmt->bind_result($district); | |
/* fetch value */ | |
$stmt->fetch(); | |
printf("%s is in district %s\n", $city, $district); | |
/* close statement */ | |
$stmt->close(); | |
}/* close connection */$mysqli->close();?> |
Tidak ada komentar:
Posting Komentar
Jika Anda memiliki tanggapan dan pertanyaan silakan isi form komentar berikut, kami akan menjawabnya segera. :)