2013-03-04 53 views
2

2147483647 MYSQL問題。關於Mysql的Varchar問題2147483647

當在電話字段中插入一個11位數字,我收到在保存在DB: 2147483647

TEL回這個號碼被設置爲VARCHARINT強硬。

另外,在一個數據庫託管在SERVER 1我有相同的確切的數據庫表,並沒有同樣的問題艱難?!可能是什麼?

這是SQL和PHP

tel_no varchar(20) utf8_general_ci Yes NULL 
mob_no varchar(20) utf8_general_ci Yes NULL 

那是MYSQL。是的,我在數據庫中插入了一個11位數的字符串作爲字符串

$telno = GetValue($post['tel_no']); 
$mobno = GetValue($post['mob_no']); 

$sql = "UPDATE ".$this->dbpre."bookings SET tel_no='$telno', mob_no='$mobno'... 

您能否請幫助?我瘋了!

+1

可能的重複http://stackoverflow.com/questions/10255724/incorrect-integer-2147483647-is-inserted-into-mysql – Hackerman 2013-03-04 21:10:57

+0

沒有意義。您是否使用相同的前端接受電話號碼來測試這兩個平臺?總是很好地展示你的SQL。 – 2013-03-04 21:12:37

+0

某處有一些非SQL代碼將varchar列拉出並開始將其視爲整數。 – nos 2013-03-04 21:15:44

回答

4

2147483647是mysql的最大int值。只需將類型從int更改爲bigint即可。

+2

雖然你說的數字是最大的(有符號)整型值,但答案並未改變爲bigint,答案正在從int更改爲varchar,因爲電話號碼無法正確保存爲整數(由於長度未知,前綴(如果適用),格式化的空格字符等)。 – 2013-07-22 09:09:20

+0

謝謝@ N.B。 我想你對國際號碼是正確的,特別是當沒有使用[mysql_real_escape_string](http://php.net/manual/en/function.mysql-real-escape-string.php)時。 – George 2013-07-22 10:32:34

-1

解決方案 - >>>數據庫:改變從int類型BIGINT或VARCHAR到BIGINT