2009-05-23 46 views
2

这里是我的表上的部分代码:PHP价值将不超过127

<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

回答

6

如果字段“国家”被定义为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

+0

那么我该如何改变它? – Hintswen 2009-05-23 11:06:14

3

我们需要看到您的SQL DDL语句才能够解决这个问题之一。最可能的原因是,你有过小范围的数据类型在数据库中能够处理超过127

更大的数字执行以下语句:

SHOW CREATE TABLE sites_countries; 

这里后的结果。