use*_*103 1 php mysql preg-replace
我有一个输入框,告诉我的用户将他们的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/>
Run Code Online (Sandbox Code Playgroud)
这是处理输入的PHP代码:
$gplus=preg_replace("/[^0-9]/", "", $_POST['gplus']);
mysql_query( "UPDATE contacts SET googleplus='$gplus' WHERE username='$user'" )
or die ( "Could not update GooglePlus" );
Run Code Online (Sandbox Code Playgroud)
我只需要他们地址末尾的数字,因为其余的对每个人都是一样的.这是问题所在.当用户输入最多10位数时,它可以很好地存储数字.当用户输入超过10位数字时,它会将此数字存储在数据库中:"2147483647".始终是相同的数字.任何字母都应该被剥离,但是任何超过十位的数字都会导致这个数字出现.
我搜索了我的代码"2147483647",这不是任何一个!
http://dev.mysql.com/doc/refman/5.5/en/integer-types.html:
Type: INT
Maximum Value: 2147483647
Run Code Online (Sandbox Code Playgroud)
您显然将值存储为整数,当数字太大时,会出现溢出,最终得到最大值.
您不应该将这些值存储为整数,因为它们不是数字 - 它们没有数字含义,它们只是一个标识符.请改用(VAR)CHAR.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |