PHP值不会超过127

时间:2009-05-23 10:59:51

标签: mysql types range

以下是我表单上代码的一部分:

<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

3 个答案:

答案 0 :(得分:6)

如果字段“country”被定义为signed tinyint,则最大值为127 见http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

编辑:即使您的MySQL服务器允许您插入超出范围的数据,您也可以获得有关截断的信息,例如:使用

SHOW WARNINGS
会产生
"Level";"Code";"Message"
"Warning";"1264";"Out of range value for column 'i' at row 1"
之类的内容 您还可以将服务器置于严格模式,如果任何数据超出范围,则会出错 见http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

答案 1 :(得分:3)

请检查您的国家/地区数据列类型。 如果此列是tinyint,请检查它是否为“unsigned”。

签名的tinyint约束为-127/127

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

答案 2 :(得分:3)

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

执行以下声明:

SHOW CREATE TABLE sites_countries;

在此处发布结果。