Сейчас делаю так
if (isset($_POST['position'])) $position=$_POST['position'] ? mysql_real_escape_string($_POST['position']) : '';
И далее доп проверки по типу
if ($position>10) {echo'Больше 10. Стоп.'; exit();}
т.е. использую mysql_real_escape_string
Но если послать в $_POST['position'] 0 (ноль), то mysql_real_escape_string отфильтрует его.
Если 00 то всё нормально, не фильтрует.
Разумеется у меня может быть 0 в моем значении. но получить его я не могу т.к. я передаю ноль, а конструкция mysql_real_escape_string его уничтожает.
В связи с этим возникают два вопроса
1) Почему mysql_real_escape_string уничтожает (фильтрует?) строку вида "0", когда строку "00" пропускает?
2) Как безопасно передавать данные в mysql запрос?