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.