Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation de supérieur ou égal à (>=) et inférieur ou égal à (<=) dans les instructions SQL SELECT et PDO

Essayez d'ajuster un peu la logique. Tout comme Phoenix Wright, il suffit parfois de retourner les choses pour les résoudre :

$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'];

Utilisation d'une valeur comme premier opérande pour BETWEEN et IN n'est pas quelque chose auquel beaucoup de gens penseraient, pourtant c'est tellement puissant ;)

Plus important encore (et merci à Fred -ii- de m'avoir accidentellement aidé à comprendre), min et max sont des noms de fonction. Si vous souhaitez les utiliser comme noms de colonne, vous devez enveloppez-les de backticks, comme je l'ai fait dans mon code ci-dessus.

En règle générale, vous devriez toujours mettez des backticks autour de vos noms de table et de colonne. Ne pas le faire revient à écrire $foo = bar; en PHP. Bien sûr, ça va marcher , mais si bar s'avère être un nom de constante ou de fonction, alors l'enfer se déchaîne.