2012-04-07 47 views
1

好吧,我正在開展一個php大學項目,我必須讓學生註冊,提交他們的詳細信息 - 名字,姓氏,電話號碼,身份證號碼等。MySQL數據類型在PHPMyAdmin中不會更改...?

起初我使用int作爲id號但我不打算對它進行任何數學運算,所以我將其更改爲varchar,但是在此更改之後,我提交的所有示例仍然出現最大的int值「2147483647」,當我將它指定爲varchar時,爲什麼這發生了,我該如何解決它。

如果它有助於表字段的整理都是latin1_swedish_ci。 我不是MySQL專家,所以如果有任何其他信息需要到這個問題的底部,請問。

編輯:我也改變了字段的值回BIGINT,它仍然拋出2147483647表中,即使我進入8888888888888(13個字符),所以用VARCHAR或BIGINT我仍然得到2147483647,我在做什麼錯?

更新:當嘗試更改字段的最大值時,我從phpmyadmin中得到以下錯誤。

SQL query: 

ALTER TABLE `student` CHANGE `idno` `idno` BIGINT(99999999999999) NOT NULL 

MySQL said: 

#1439 - Display width out of range for column 'idno' (max = 4294967295) 

更新:取出INTVAL()修復了這個問題

$id_number=intval($_POST['id_number']); 
$id_number=($_POST['id_number']); 
+0

如果它是一個數字類型,然後把它作爲一個int/BIGINT 。僅僅因爲你沒有對價值觀進行「數學」並不意味着你應該把所有其他因素都保持爲整數。你是如何做這個「改變」的? 'alter table'? – 2012-04-07 17:19:57

+0

另外我沒有Prof的數據庫結構轉儲,所以PHP應用程序應該是可移植的,他只是將我的代碼連接到他的數據庫。 – grasshopper 2012-04-07 17:20:44

+0

在phpmyadmin中,我只是在結構菜單下更改了字段的數據類型。 – grasshopper 2012-04-07 17:21:52

回答

2

不要使用varchar作爲ID,除非你真的需要在ID(PK?)字段使用字母。使用整數更快。也許PHP腳本試圖將數據庫的varchar更改爲整數,因此將ID更改回int

您真的需要bigint嗎?未簽名的int可能綽綽有餘。 http://dev.mysql.com/doc/refman/5.0/en/integer-types.html

更新:如果你需要確保值是一個整數,你應該檢查它的數據類型。

if(is_int($my_value)){ 
    //do the script 
} 
    else{ 
    //echo error message 
    } 

如果值來自DB(列其中的數據類型爲整數),一切都應該是確定的,但它絕不會傷害檢查...

+0

好吧,我剛剛檢查了類型與gettype(),類型是PHP中的整數,並且該字段的類型是varchar,但表中的值仍然是2147483647? – grasshopper 2012-04-07 17:28:02

+0

@grasshopper將DB數據類型更改爲整數,並在必要時重置自動增量。 (如果我正確理解你的話,你在DB中擁有最大的'int'值。) – 2012-04-07 17:34:40

+0

你說得對我在我的php代碼中有這個$ id_number = intval($ _ POST ['id_number']);我猜intval函數導致了這些問題 - 因爲我把它拿出來以後一切都正常工作 – grasshopper 2012-04-07 19:04:35

相關問題