質問

ここに私のフォーム上のコードの一部です:

<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である私は私のデータベースを見て、それだけで127を取得するようです。

役に立ちましたか?

解決

は、フィールド「国が」最大値TINYINT署名として定義されている場合は127
です http://dev.mysql.com/doc/refman見ます/5.0/en/numeric-types.htmlする

編集:MySQLサーバは、例えば、あなたが切り捨てについての情報を得ることができる範囲外のあるデータを挿入することができます場合でも、

何かにつながる
SHOW WARNINGS
which like
"Level";"Code";"Message"
"Warning";"1264";"Out of range value for column 'i' at row 1"
また、strictモードでサーバーを配置し、任意のデータが範囲外の場合はエラーを取得することができます。
http://dev.mysql.com/doc見ます/refman/5.0/en/server-sql-mode.html

他のヒント

あなたの国のデータ列の種類を確認してください。 この列がtinyint型であれば、それは「符号なし」の場合は、チェックします。

署名付きTINYINTは-127/127に制約下されている。

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

私たちは、これを解決することができるようにあなたのSQL DDL-文を参照してくださいする必要があります。最も可能性の高い原因は、あなたが127よりも大きな数字を扱うことができるようにするため、データベース内の、あまりにも小さい範囲でデータ型を持っているということです。

次の文を実行します:

SHOW CREATE TABLE sites_countries;

ここで結果を投稿します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top