2009-05-23 7 views
2

est ici une partie du code sur mon formulaire:valeur PHP ne dépassera pas 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 

et voici mon code 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()); 
    } 
} 

mais je regarde ma base de données et il semble seulement arriver à 127, alors $ 127 pays est toujours

Répondre

6

Si le champ « pays » est défini comme signé tinyint la valeur maximale est 127.
voir http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

edit: même si votre serveur MySQL vous permet d'insérer des données hors de portée, vous pouvez obtenir des informations sur la troncature, par ex. avec

SHOW WARNINGS
qui se traduirait par quelque chose comme
"Level";"Code";"Message" 
"Warning";"1264";"Out of range value for column 'i' at row 1"
Vous pouvez également mettre le serveur en mode strict et obtenir une erreur si des données sont hors de portée.
voir http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

+0

bien comment puis-je le changer? – Hintswen

+1

Après avoir vérifié qu'il s'agit en fait d'une tinyint avec SHOW CREATE TABLE tblName et que les modifications ne casseront aucun autre code en utilisant cette table, vous pouvez modifier la définition de la table, voir http://dev.mysql.com/doc/ refman/5.0/fr/alter-table.html – VolkerK

+0

@MasterPeter - essayé cela, toujours au maximum à 127 – Hintswen

3

Nous aurions besoin de voir vos instructions DDL-SQL pour être en mesure de résoudre celui-ci. La cause la plus probable est que vous avez un type de données avec une trop petite plage dans votre base de données pour être en mesure de traiter un plus grand nombre de 127.

Exécutez l'instruction suivante:

SHOW CREATE TABLE sites_countries; 

Poster les résultats ici.