繁体   English   中英

在php中处理数字输入失败

[英]Processing numeric input in php fails

我有一个输入框,告诉我的用户将其Google Plus地址复制并粘贴到其中。 这是输入框的代码:

<div class="row-fluid"><div class="span3 sidebar"><h4>Google Plus:</h4></div>
<div class="span9"><p> <input type="text" name="gplus" value="$data->googleplus" placeholder="Google Plus Profile URL">
</p></div></div><br/>

这是处理输入的PHP代码:

$gplus=preg_replace("/[^0-9]/", "", $_POST['gplus']);
mysql_query( "UPDATE contacts SET googleplus='$gplus' WHERE username='$user'" )
or die ( "Could not update GooglePlus" );

我只需要在地址末尾加上数字,其余的每个人都一样。 这是问题所在。 当用户输入最多10位数字时,它会很好地存储数字。 当用户输入10位以上的数字时,它将此数字存储在数据库中:“ 2147483647”。 号码始终相同。 任何字母都会按照应有的方式去掉,但其中任何十个以上的数字都会导致该数字上升。

我已经在我的代码中搜索了“ 2147483647”,但没有任何代码!

http://dev.mysql.com/doc/refman/5.5/en/integer-types.html

Type: INT
Maximum Value: 2147483647

显然,您将值存储为整数,并且当数字太大时,会溢出并最终得到最大值。

无论如何,您都不应该将这些值存储为整数,因为它们不是数字-它们没有数字含义,它们只是一个标识符。 请改用(VAR)CHAR。

我认为您的数据库字段不正确。 将其更改为bigint或float(或varchar ...)。

添加链接: http : //dev.mysql.com/doc/refman/5.5/en/integer-types.html

同意cbroe的观点,varchar可能是最佳选择

编辑同意更好的答案:)

您必须在数据库中检入表,创建数据库时,必须为选项卡中的每个字段选择一种类型,例如对于整数字段,max_value为2,147,483,647,因此,如果需要更多空间,可以使用bigint或使用此数字仅像数字序列一样,您也可以使用字符串。

我希望对您有用,别头(对不起我的英语!)

您应使用BIGINT unsigned存储大于2147483647或小于-2147483647的数字,因为google plus ID是类似于116686373347867906934的数字

阅读本部分http://dev.mysql.com/doc/refman/5.5/en/out-of-range-and-overflow.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM