Как установили другие, проверьте ввод перед тем, как передать его в базу данных, чтобы убедиться, что он является целым числом, не содержит ничего, кроме цифр, и имеет разумное значение размера.В этом случае вы эффективно предотвратите SQL-инъекцию.
Вам также не следует создавать строки запросов, объединяя командную логику с параметрами из ненадежных источников.Вам следует использовать параметризованные запросы, где вы определяете, куда данные вписываются в инструкцию SQL при его создании, а затем связываете значение позже.Это позволяет базе данных различать то, что вы намереваетесь командовать тем, что вы собираетесь представлять данными, предотвращая инъекцию SQL, даже если вы пропустили случай атаки при проверке входных данных (для этого конкретного случая белый список прост ...это не всегда верно или даже возможно).Подробнее о параметризованных запросах можно прочитать на хорошо написанной странице OWASP SQL Injection Prevention Prevention .