Gunakan PDO (Objek Data PHP) untuk terhubung ke database MySQL Anda. Metode ini akan memastikan bahwa semua input database akan selalu diperlakukan sebagai string teks dan Anda tidak perlu melakukan pelolosan manual.
Ini dikombinasikan dengan penggunaan html_entities() yang tepat untuk menampilkan data dari database Anda adalah cara yang solid dan baik untuk melindungi halaman Anda dari injeksi. Saya selalu menggunakan PDO untuk menangani semua koneksi database saya di proyek saya.
Buat objek database (dan dalam hal ini terapkan pengkodean karakter tertentu):
try {
$db = new PDO("mysql:host=[hostname];dbname=[database]",'[username]','[password]');
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES utf8");
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$db->exec('SET NAMES utf8');
} catch (PDOException $e) {
echo $e->getMessage();
}
Kemudian gunakan seperti ini:
$id = 1;
$q = $db->prepare('SELECT * FROM Table WHERE id = ?');
$q->execute(array($id));
$row = $q->fetch();
echo $row['Column_1'];
atau
$q = $db->prepare('UPDATE Table SET Column_1 = ?, Column_2 = ? WHERE id = ?');
$q->execute(array('Value for Column_1','Value for Column_2',$id));
dan dengan wildcard:
$search = 'John';
$q = $db->prepare('SELECT * FROM Table WHERE Column_1 LIKE ?');
$q->execute(array('%'.$search.'%'));
$num = $q->rowCount();
if ($num > 0) {
while ($row = $q->fetch()) {
echo $row['Column_1'];
}
} else {
echo "No hits!";
}
Baca selengkapnya:
Bagaimana cara mencegah injeksi SQL di PHP?
Kapan *tidak* menggunakan pernyataan yang disiapkan?
seberapa aman pernyataan yang disiapkan PDO
http://php.net/manual/en/book.pdo.php