Placeholder Posisional di PDO di PHP
Mari kita pahami cara bekerja dengan placeholder posisional. Misalkan kita memiliki dua variabel, yang ingin kita sisipkan ke dalam kueri:
<?php
$min = 1;
$max = 5;
?>
Misalkan kita ingin menyisipkan variabel kita sebagai berikut:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Namun, melakukan hal seperti ini tidak aman. Oleh karena itu, alih-alih menyisipkan variabel secara langsung, gantilah dengan placeholder posisional, yang direpresentasikan dengan tanda tanya:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Sekarang jalankan perintah yang mempersiapkan kueri:
<?php
$res = $pdo->prepare($sql);
?>
Sekarang jalankan kueri, dengan meneruskan parameter array yang berisi variabel kita. Dalam hal ini variabel akan disisipkan ke dalam kueri sesuai urutan yang ditentukan dalam array:
<?php
$res->execute([$min, $max]);
?>
Setelah itu, kita bisa mendapatkan hasil kueri:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Mari kumpulkan semuanya dan kita dapatkan kode berikut:
<?php
$min = 1;
$max = 5;
$sql = 'SELECT * FROM users WHERE id>? and id<?';
$res = $pdo->prepare($sql);
$res->execute([$min, $max]);
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Diberikan variabel:
<?php
$age = 30;
$salary = 1000;
?>
Temukan semua pengguna, yang usia atau gajinya sama dengan nilai yang diberikan dalam variabel.
Cobalah lakukan SQL-injection pada kode Anda. Pastikan itu tidak akan berhasil.