2012-04-07 33 views
1

[OK]を、など、私はPHPの大学のプロジェクトに取り組んでいる、と私は学生が登録させる必要があり、その詳細 - ファーストネーム、姓、電話番号、ID番号を提出PHPMyAdminではMySQLのデータ型は変更されません...?

まず私は、ID番号のためにint型を使用私はvarcharに変更しましたが、この変更後、私が提出したすべての例は、最大整数値 "2147483647"で出力されました。これが起こり、どのように修正することができます。

テーブルフィールドの照合がすべてlatin1_swedish_ciに役立つ場合は、 私はMySQLのエキスパートではないので、他の情報がある場合は、この問題の最下部に移動する必要があります。

編集:フィールドの値をbigintに戻しても、8888888888888(13文字)を入力したにもかかわらず、テーブルに2147483647がスローされるので、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(?PK)、フィールド内の文字を使用する必要がない限り、IDとしてvarcharを使用しないでください

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

それは数値型だ場合は、int型/ BIGINTとしてそれを残します。あなたが値に「数学」をしていないからといって、intとして保持することから来るすべてのものを捨てなければならないわけではありません。あなたはどうやってこれをしましたか? 'alter table'ですか? –

+0

また、私はProfのデータベース構造のダンプを持っていないので、PHPアプリケーションはポータブルでなければならず、彼のコードをデータベースに接続するだけです。 – grasshopper

+0

phpmyadminでは、構造メニューのフィールドのデータ型を変更しました。 – grasshopper

答えて

2

この問題を修正しました。整数を使う方が速いです。おそらく、PHPスクリプトはDBの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から来る場合(データ型だ列が整数である)すべてがOKでなければなりませんが、それはチェックして痛いことはありません...

+0

これでgettype()で型をチェックしたところ、型はPHPの整数で、フィールドの型はvarcharですが、テーブルの値はまだ2147483647ですか? – grasshopper

+0

@grashhopper DBのデータ型を整数に変更し、必要に応じて自動インクリメントをリセットします。 (あなたが正しくあなたを理解していれば、あなたはDBに最大のint値を持っています) –

+0

あなたは私のPHPコードでこれを持っていました$ id_number = intval($ _ POST ['id_number']);私はintval関数が問題を引き起こしたと思う - 私はそれを取り出したので、すべてが働いている原因 – grasshopper

関連する問題