Pemegang Tempat Kedudukan dalam PDO di PHP
Mari kita fahami bagaimana untuk bekerja dengan pemegang tempat kedudukan. Katakan kita mempunyai dua pembolehubah yang ingin kita masukkan ke dalam pertanyaan:
<?php
$min = 1;
$max = 5;
?>
Katakan kita ingin memasukkan pembolehubah kita seperti berikut:
<?php
$sql = "SELECT * FROM users WHERE id>$min and id<$max";
?>
Walau bagaimanapun, melakukan ini adalah tidak selamat. Oleh itu, daripada memasukkan pembolehubah secara langsung, gantikannya dengan pemegang tempat kedudukan, yang diwakili oleh tanda soal:
<?php
$sql = 'SELECT * FROM users WHERE id>? and id<?';
?>
Sekarang, laksanakan arahan yang akan menyediakan pertanyaan:
<?php
$res = $pdo->prepare($sql);
?>
Sekarang laksanakan pertanyaan, dengan menghantarnya parameter array yang mengandungi pembolehubah kita. Pada masa yang sama pembolehubah akan dimasukkan ke dalam pertanyaan dalam urutan yang dinyatakan dalam array:
<?php
$res->execute([$min, $max]);
?>
Selepas itu, kita boleh mendapatkan hasil pertanyaan:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
Mari kumpulkan semuanya dan kita dapatkan kod 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);
}
?>
Diberi pembolehubah:
<?php
$age = 30;
$salary = 1000;
?>
Cari semua pengguna, yang umur atau gaji sama dengan nilai yang diberikan dalam pembolehubah.
Cuba lakukan suntikan SQL ke dalam kod anda. Pastikan ia tidak akan berjaya.