Il problema sta nelle query di sopra. In effetti mysqli_query torna un boolean (false) quando c'è un errore.
Di più. La query SELECT COUNT idD FROM dispensa ti torna un solo valore. Quindi la parte nel between ti torna sempre -8 e 1 se funziona.