2011-01-06 18 views
0

は、私が "はuserId" というフィールドでMySQLのテーブルを持っている:のInt値が変化mysqlデータベースへの挿入時に - PHP

`userId` int(20) NOT NULL 

挿入文は次のとおりです。

$result = mysql_query("INSERT INTO users (userId, firstName, lastName, dateCreated) VALUES (".$me['userId'].", '".$me['first_name']."', '".$me['last_name']."', CURDATE()) ")or die(mysql_error()); 

ときのuserIdの値PHPでエコーさ100000517980247ですが、それを挿入すると2147483647に変更されます。私はそれをvarcharフィールドに挿入するといいです。これは本当にシンプルなものでなければなりませんが、私はちょっと調べましたが、私はそれを見ていません。

答えて

7

MySQLの整数は32ビット整数です。あなたは限界をはるかに超えている数値を挿入していますので、可能な最大整数は2147483647です。

64ビットデータ型のデータ型を "bigint"に変更しました。 。

+0

ありがとう!許容値を挿入するのではなく、このような場合には例外のように思えます。 – tessa

+0

strictモード(http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_strict_all_tables)を有効にすることができます。これにより、MySQLは範囲外の値を拒否します。それ以外の場合は、フィールドに合わせて値を黙って強制します –

1

INT型を使用します。そして、タイプBIGINTを使用する必要があります。

関連する問題