2016-03-21 5 views
-5

У меня есть поле ввода text, которое имеет type=number. Когда я отправляю его из формы, содержащей этот элемент, в saveform.php, он получает числа в виде строки. Поэтому, когда я использую запрос на обновление в saveform.php обновить БД с этим значением, mysql обновляется с intval этого string.In mysql я есть столбец по имени mobile_no, который относится к типу int и длины 15.update int value to mysql php

saveform.php

$query="UPDATE `registered_users` SET `user_name`=?,`mobile_no`=?,`addressline1`=?,`addressline2`=?,`city`=?,`zipcode`=? WHERE `user_email`=?"; 
$statement = $mysqli->prepare($query); 
$statement->bind_param("sisssis", $username, $mobileno, $addressline1, $addressline2, $city, $zipcode, $email); 

Это код запроса, который я имею made.I сделали var_dump из $mobile_no и выхода этой свалки приводятся ниже.

string '9560987629' (length=10) 

Это обновляется в БД с этим Int 2147483647 .Как я должен обновить правильные значения без изменения моего mysql столбец из INT в строку.

+2

Сделайте это bigint. https://dev.mysql.com/doc/refman/5.5/ru/integer-types.html – chris85

+2

Номера телефонов мобильного телефона могут содержать символы типа '+' перед кодом страны. Возможно, было бы лучше сделать это как-то вроде текстового столбца, а не числа – RiggsFolly

+0

. На самом деле вы можете захотеть сохранить телефон # как строки вместо int. Быстрый поиск по SO показывает несколько причин использования строкового типа данных в этом случае. – mopo922

ответ

1

Значение 2147483647 на самом деле является наивысшим значением, которое может иметь знаковое целое число. Вам нужно изменить тип данных на bigint, тогда он позволит достаточно большие числа.

Я бы порекомендовал вам хранить телефонные номера как строки. В зависимости от варианта использования, это может понадобиться в какой-то момент. Некоторые страны фактически работают с номерами телефонов, начиная с 0. В этот момент лучше всего хранить цифры в виде строки.

Why is 2,147,483,647 the max int value?

1

Ответ на ваш вопрос о том, что максимальное значение для целого столбца 2147483647 или 4294967295 если без знака. https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

Вы должны использовать тип данных bigint для хранения целых чисел, превышающих эти значения.

Возможно, вы не должны хранить телефонные номера целыми числами. Номера телефонов и почтовые индексы, хотя и отформатированы как цифры, на самом деле не являются номерами. Я рекомендую хранить их как строки.

Например, мой почтовый индекс 02128, если он хранится в целочисленном столбце, будет 2128.