Probeer de logica een beetje aan te passen. Net als Phoenix Wright, is het soms voldoende om dingen om te draaien om ze op te lossen:
$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'];
Een waarde gebruiken als de eerste operand voor BETWEEN
en IN
is niet iets waar veel mensen aan zouden denken, maar het is zo krachtig;)
Wat nog belangrijker is (en dank aan Fred -ii- voor het per ongeluk helpen realiseren), min
en max
zijn functienamen. Als u ze als kolomnaam wilt gebruiken, moet wikkel ze in backticks, zoals ik heb gedaan in mijn bovenstaande code.
Als algemene regel moet u altijd zet backticks rond uw tabel- en kolomnamen. Dit niet doen staat gelijk aan het schrijven van $foo = bar;
in PHP. Natuurlijk, het werkt , maar als bar
toevallig een constante of functienaam is, dan breekt de hel los.