Försök att justera logiken lite. Precis som Phoenix Wright, ibland allt som krävs för att vända på saker och ting för att lösa dem:
$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'];
Använder ett värde som den första operanden för BETWEEN
och IN
är inget många skulle tänka på, men det är så kraftfullt;)
Ännu viktigare (och tack till Fred -ii- för att han av misstag hjälpte mig att inse), min
och max
är funktionsnamn. Om du vill använda dem som kolumnnamn måste du linda in dem i backticks, som jag har gjort i min kod ovan.
Som en allmän regel bör du alltid sätt backticks runt dina tabell- och kolumnnamn. Att inte göra det är ungefär som att skriva $foo = bar;
i PHP. Visst, det kommer att fungera , men om bar
råkar vara ett konstant- eller funktionsnamn så bryter helvetet löst.