Все значения, переданные функции должны быть числовыми, при этом если число не целое, оно до него округлиться. Если передать, скажем, строку, то intval вернет 0, в большинстве случаев.
Ну тогда не забудь что на выходе этой функции всегда число(!) даже если туда пришел какой-либо текст. Так что при попытке инъекции функция вернет число - 1 и пойдет по кочкам твоя защита.
Во-первых, почему 1?
Во-вторых, как можно произвести инъекцию передав в БД единицу?
saSHADE, Ну обьясни как правельно сделать?
функция может вернуть как 1 так и 0, инъекции как таковой нет, но если например нам нужно поле 5, а в запрос пришло другое число? Тогда запрос валидный и выполнится, а вот что в той, новой строке?
Ну так если такого поля нет, mysql вернет пустой результат, что в этом плохого? И вернет ноль, а не единицу, потому, что для возврата единицы нужно чтобы строка распозналась как числовое значение, которые никакого отношения к инъекциям не имеют)
Так правельно я фильтрую или нет?