Daftar Putih
Kode Anda dalam bentuknya saat ini sangat berbahaya, Anda tidak hanya mengizinkan pengguna untuk memutuskan bidang apa yang harus dipilih tetapi Anda juga mengizinkannya untuk memutuskan tabel apa yang akan ditanyakan. Anda pasti harus melakukan pemeriksaan daftar putih ini. misalnya:
if($_POST['tableSelected'] == 'acceptable_table1' || $_POST['tableSelected'] == 'acceptable_table2) {
$table = $_POST['tableSelected']
}
Demikian pula Anda harus memvalidasi daftar bidang. Tetapi validasi daftar bidang akan menjadi agak rumit karena bidang Anda akan bergantung pada tabel. Saya menyarankan untuk membuat array dan memeriksa apakah pilihan ada di dalamnya.
$table1_fields = array('col1','col2',...)
$table2_fields = array('col1','col2',...)
Pernyataan yang Disiapkan
Seperti yang Anda ketahui, pernyataan yang disiapkan hanya dapat digunakan untuk mengikat parameter. Mereka tidak dapat digunakan untuk mengisi nama tabel dan nama kolom. Itu sebabnya Anda membutuhkan pernyataan yang sudah disiapkan dan daftar putih. Saya sarankan menggunakan PDO . Mungkin terlihat seperti
$stmt = $dbh->prepare("SELECT {$fieldlist} FROM {$table} where field = ?");
$stmt->execute(array('somevalue'));