Coba atur sedikit logikanya. Sama seperti Phoenix Wright, terkadang yang diperlukan hanyalah membalikkan keadaan untuk menyelesaikannya:
$pk = $db->prepare("SELECT `grade` FROM `grading` WHERE ? BETWEEN `min` and `max`");
$pk->execute(array($mark));
$ind = $pk->fetch(PDO::FETCH_ASSOC);
echo $ind['grade'];
Menggunakan nilai sebagai operan pertama untuk BETWEEN dan IN bukanlah sesuatu yang akan dipikirkan banyak orang, namun sangat kuat;)
Lebih penting lagi (dan terima kasih kepada Fred -ii- karena secara tidak sengaja membantu saya menyadari), min dan max adalah nama fungsi. Jika Anda ingin menggunakannya sebagai nama kolom, Anda harus bungkus dengan backticks, seperti yang saya lakukan pada kode saya di atas.
Sebagai aturan umum, Anda harus selalu letakkan backticks di sekitar nama tabel dan kolom Anda. Tidak melakukannya sama dengan menulis $foo = bar; di PHP. Tentu, itu akan berhasil , tetapi jika bar kebetulan adalah nama fungsi atau konstanta maka semuanya berantakan.