ロジックを少し調整してみてください。成歩堂龍一と同じように、問題を解決するために物事をひっくり返す必要がある場合もあります。
$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'];
BETWEEN
の最初のオペランドとして値を使用する およびIN
多くの人が考えるようなものではありませんが、それでも非常に強力です;)
さらに重要なことに(そして、誤って私が気付くのを手伝ってくれたFred -ii-に感謝します)、min
およびmax
関数名です。それらを列名として使用する場合は、必須 上記のコードで行ったように、バックティックでラップします。
原則として、常に テーブル名と列名の周りにバッククォートを配置します。そうしないことは、$foo = bar;
を書くことに似ています。 PHPで。確かに、それは動作します 、ただしbar
の場合 たまたま定数または関数名であると、すべての地獄が解き放たれます。