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

我们需要查看您的 SQL DDL 语句才能解决这个问题。最可能的原因是您的数据库中的数据类型范围太小,无法处理大于 127 的数字。

执行以下语句:

SHOW CREATE TABLE sites_countries;

在这里发布结果。

于 2009-05-23T11:08:56.067 回答