Après quelques recherches, j'ai finalement appris que le paramètre de la fonction est un masque de bits et qu'il faut combiner plusieurs valeurs pour obtenir le résultat souhaité. La combinaison finale n'est pas trop logique, mais elle fonctionne comme prévu, lançant une exception sur une erreur de requête tout en ignorant les avertissements.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
produira le résultat souhaité :
Erreur fatale :exception non interceptée 'mysqli_sql_exception' avec le message 'Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de 'foo' à la ligne 1'