Как безопасно передавать данные в mysql запрос?

Сейчас делаю так
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 запрос?
  • Вопрос задан
  • 271 просмотр
Пригласить эксперта
Ответы на вопрос 3
@Snewer
Используйте PDO
Ответ написан
Комментировать
slo_nik
@slo_nik Куратор тега PHP
Добрый день.
Если Вы передаёте число, как я понимаю, то и обозначайте, что это integer.
$position=$_POST['position'] ? int()$_POST['position'] : '';
Ответ написан
vesper-bot
@vesper-bot
Любитель файрволлов
Проверка $_POST['position'] возвращает ложь для 0. Проверяйте через !==null.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы