преобразование текста в int из формы

Я пытаюсь получить некоторые данные из формы, но я не могу по какой-то причине. вот несколько строк моего кода.

cellphone: <input type = "text" name = "cellphone"><br /> username : <input type = "text" name = "username"><br /> 

     $ cellphone = $ _GET ["cellphone"];
     // $ cellphone = int () $ cellphone;
     $ username = $ _GET ["username"];

 $ link = mysql_connect ('myhost', 'myuser', 'mypass') или die («невозможно подключиться к базе данных»);
     mysql_select_db («hunter», $ link) или die («не удалось найти базу данных»);
     echo "fetced database";
     // ввод информации пользователя в базу данных
     mysql_query («INSERT INTO» значения игрока ('', '$ firstname', '$ lastname', '$ location', '$ cellphone', '$ username', '$ email', '$ password') ") или die («не вводить в базу данных»);

но я не могу получить номер ячейки, чтобы попасть в мою базу данных по какой-то причине. помогите мне: D

ПЕРВЫЙ:
вы должны дезинфицировать все входящие переменные!

то, чтобы отличить целое число, вы можете использовать:

 $cellphone = (int) $_GET["cellphone"]; 

Лучшим решением является использование filter_var();

 $cellphone = filter_var( $_GET["cellphone"], FILTER_VALIDATE_INT); 

Вы должны прочитать информацию о проверке ввода / sanitazion и filter_var, прежде чем писать какой-либо дополнительный код.

теперь, прежде чем люди начнут советовать mysql_real_escape_string() (который выполняет задание, но не является лучшим решением), посмотрите на подготовленные заявления через PDO или MySQLi

  1. сделайте свой метод POST, а не GET. GET – для данных запроса и POST для хранения.
  2. Подумайте о том, чтобы использовать поле типа varchar для номера телефона.
  3. Хотя было бы неплохо нормализовать номер телефона перед вставкой, удалив из него все нечисловые символы.
  • Замените die ("msg") на die (mysql_error ()), чтобы отладить причину сбоя
  • Не вставляйте предоставленные пользователем данные непосредственно в БД, используйте mysql_real_escape_string () или аналогичные для дезинфекции данных и защиты от SQL-инъекций
  • если проблема в том, что поле телефона объявлено как int в БД, тогда заверите, что это целое число перед выполнением вставки. Вы можете попытаться применить к int, но я думаю, что вы должны выполнить более точную обработку данных, проверить ожидаемый «признанный» формат и тип для каждого поля и вернуть пользователю ошибку поля в случае неправильной установки

Кстати, если вы храните номер телефона в виде целого числа, вы не очень хорошо обрабатываете международный префикс (например, +39 или 0039 для Италии), так как «+» не является числом, а «00» будет потерян в бросать в целое ….

это может означать, что ваш столбец mysql принимает только INT, но входной буквенно-цифровой. в этом случае вы можете использовать $cellphone = filter_var($_GET['cellphone'], FILTER_SANITIZE_NUMBER_INT); если вы ожидаете ввода только целых чисел