Единственный способ избежать этого:
Если вы уже знаете, что order_id вашей таблицы имеет тип INT, то мы должны убедиться, что когда $ order_id преобразован в INT, он соответствует пользовательскому вводу!
if ((strval((int)$order_id)) !== $order_id) {$order_id='';}
Команда преобразует $ order_id в int, а затем обратно в строку и проверяет, является ли полученная строка точной строкой, предоставленной пользователем.
Если нет, то мы знаем, что автоматическое преобразование имело место и испортило ввод пользователя.
В этом случае мы уничтожаем пользовательский ввод, чтобы он не возвращал данные, не предназначенные для этого пользователя.
Если мы добавим это до того, как создадим наш SQL:
, если пользователь введет '16garbage', $ order_id станет' '.
, если пользователь введет' 16 ', $ order_id останется' 16 '.