Hãy thử điều chỉnh logic một chút. Cũng giống như Phoenix Wright, đôi khi cần phải lật lại mọi thứ để giải quyết chúng:
$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'];
Sử dụng một giá trị làm toán hạng đầu tiên cho BETWEEN
và IN
không phải là thứ mà nhiều người sẽ nghĩ đến, nhưng nó rất mạnh mẽ;)
Quan trọng hơn (và cảm ơn Fred -ii- đã vô tình giúp tôi nhận ra), min
và max
là các tên chức năng. Nếu bạn muốn sử dụng chúng làm tên cột, bạn phải bọc chúng trong dấu gạch ngược, như tôi đã làm trong mã của mình ở trên.
Theo nguyên tắc chung, bạn nên luôn luôn đặt dấu gạch ngược xung quanh tên bảng và cột của bạn. Không làm như vậy cũng giống như viết $foo = bar;
trong PHP. Chắc chắn, nó sẽ hoạt động , nhưng nếu bar
xảy ra là một hằng số hoặc một tên hàm thì mọi thứ sẽ bị phá vỡ.