Việc bổ sung is_numeric
sẽ không làm cho đây là một cuộc tấn công sql toàn diện, nhưng is_numeric
chỉ là không chính xác lắm:
is_numeric('0xdeadbeef') // true
is_numeric('10e3') // true
Có lẽ tốt hơn nên sử dụng bộ lọc:
if (false !== ($id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT))) {
}