Pregunta
Esto es parte del código en mi formulario:
<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
y este es mi código 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());
}
}
, pero miré a mi base de datos y parece que sólo para llegar a 127, entonces $ país es siempre 127
Solución
Si el campo "país" se define como un tinyint firmado el valor máximo es 127.
ver http://dev.mysql.com/doc/refman /5.0/en/numeric-types.html
editar: incluso si su servidor MySQL le permite insertar datos que está fuera de rango se puede obtener información sobre el truncamiento, por ejemplo, con
SHOW WARNINGS
which resultaría en algo like"Level";"Code";"Message" "Warning";"1264";"Out of range value for column 'i' at row 1"También se puede poner el servidor en modo estricto y obtener un error si hay datos fuera de rango.
ver http://dev.mysql.com/doc /refman/5.0/en/server-sql-mode.html
Otros consejos
Por favor, compruebe su país tipo de columna de datos. Si esta columna es tinyint, comprobar si es "sin firmar".
tinyint firmados son constrainted a -127 / 127
Habría que ver sus DDL-sentencias SQL para ser capaz de resolver este caso. La causa más probable es que usted tiene un tipo de datos con un rango muy pequeño en su base de datos para ser capaz de manejar un número mayor que 127.
Ejecutar la siguiente declaración:
SHOW CREATE TABLE sites_countries;
Publicación de los resultados aquí.