2

私のフォームのコードの一部は次のとおりです。

<br><input type="checkbox" checked="yes" name="country[]" value="1" />Asia/Pacific Region
<br><input type="checkbox" checked="yes" name="country[]" value="2" />Europe
<br><input type="checkbox" checked="yes" name="country[]" value="3" />Andorra
...
<br><input type="checkbox" checked="yes" name="country[]" value="250" />Jersey
<br><input type="checkbox" checked="yes" name="country[]" value="251" />Saint Barthelemy
<br><input type="checkbox" checked="yes" name="country[]" value="252" />Saint Martin

これは私のphpコードです:

$country=$_POST['country'];
...
foreach ($country as $country) {
    $sql="INSERT INTO sites_countries (siteID, country) VALUES ('$id', '$country')";
    # execute SQL command
    if (!mysql_query($sql,$con)) {
        die('Error: ' . mysql_error());
    }
}

しかし、データベースを調べたところ、127 にしか到達していないようで、$country は常に 127 です

4

3 に答える 3

7

フィールド「country」が署名されたtinyintとして定義されている場合、最大値は127です。http:
//dev.mysql.com/doc/refman/5.0/en/numeric-types.html を参照してください。

編集:MySQLサーバーで範囲外のデータを挿入できる場合でも、切り捨てに関する情報を取得できます。

SHOW WARNINGS
これは次のような結果になります
"レベル";"コード";"メッセージ"
"警告";"1264";"行1の列'i'の範囲外の値"
サーバーを厳密モードにして、範囲外のデータがある場合はエラーを受け取ることもできます。http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html
を参照してください

于 2009-05-23T11:05:11.003 に答える
3

国のデータ列タイプを確認してください。この列がtinyintの場合は、「符号なし」かどうかを確認してください。

署名されたtinyintは-127/127に制限されています

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

于 2009-05-23T11:08:08.530 に答える
3

これを解決するには、SQLDDLステートメントを確認する必要があります。最も可能性の高い原因は、データベース内の範囲が小さすぎて127より大きい数値を処理できないデータ型があることです。

次のステートメントを実行します。

SHOW CREATE TABLE sites_countries;

ここに結果を投稿してください。

于 2009-05-23T11:08:56.067 に答える