Pergunta

Aqui está parte do código no meu formulário:

<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

E este é o meu 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());
    }
}

Mas olhei para o meu banco de dados e parece chegar apenas a 127, então $ country é sempre 127

Foi útil?

Solução

Se o campo "país" for definido como um tinyint assinado, o valor máximo é 127.
Vejo http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Editar: Mesmo que o seu servidor MySQL permita inserir dados que estão fora de alcance, você pode obter informações sobre o truncamento, por exemplo, com

SHOW WARNINGS
o que resultaria em algo como
"Level";"Code";"Message"
"Warning";"1264";"Out of range value for column 'i' at row 1"
Você também pode colocar o servidor no modo rigoroso e obter um erro se algum dado estiver fora de alcance.
Vejo http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html

Outras dicas

Verifique o tipo de coluna de dados do seu país. Se esta coluna for TinyInt, verifique se não é "não assinada".

Tinyint assinado está restringido a -127/127

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

Precisamos ver seus estatutos SQL DDL para poder resolver este. A causa mais provável é que você tenha um tipo de dados com um intervalo muito pequeno no seu banco de dados para poder lidar com números maiores que 127.

Execute a seguinte declaração:

SHOW CREATE TABLE sites_countries;

Publique os resultados aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top