1

わかりました。私はphp大学のプロジェクトに取り組んでいます。学生に登録させ、詳細(名、名前、電話番号、ID番号など)を送信させる必要があります。

最初はID番号にintを使用しましたが、計算を行わないため、varcharに変更しましたが、この変更後も、送信したすべての例で、最大int値が「2147483647」になります。それをvarcharに指定しましたが、なぜこれが発生し、どうすれば修正できますか。

それが役立つ場合、テーブルフィールドの照合はすべて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_number=intval($_POST['id_number']);
 $id_number=($_POST['id_number']);
4

1 に答える 1

2

varcharID(PK?)フィールドで文字を使用する必要が本当にない限り、IDとして使用しないでください。整数を使用する方が高速です。PHPスクリプトがDBvarcharを整数に変更しようとしている可能性があるため、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であるはずですが、チェックするのに害はありません...

于 2012-04-07T17:22:37.373 に答える