PHP中数据库中的数字出错

PHP中数据库中的数字出错,php,sql,Php,Sql,我有一个情况,我必须添加一个电话号码到数据库。 若我输入一个类似于:868150705的数字,它将进入数据库 如果我输入这样的内容:3706150705它将以值2147483647 通过这个输入,我将值从形式上取出来 <input type="text" class="demoInputBox" maxlength="20" name="telefonas" value="<?php if(isset($info['tel_nr'])) echo $info['tel_nr']; ?

我有一个情况,我必须添加一个电话号码到数据库。 若我输入一个类似于:
868150705
的数字,它将进入数据库 如果我输入这样的内容:
3706150705
它将以值
2147483647

通过这个输入,我将值从形式上取出来

<input type="text" class="demoInputBox" maxlength="20" name="telefonas" value="<?php if(isset($info['tel_nr'])) echo $info['tel_nr']; ?>">
我的现场电话号码格式如下:

tel\u nr int(20)


你能帮我弄一下这个奇怪的魔法吗?顺便说一句,我知道这个代码是不安全的,但该项目目前还没有上线。只需进行测试。

您试图将大于int limit的整数放入数据库。我建议使用VARCHAR(电话号码不是整数)-考虑一些类似于+420 730 500 500的情况。此外,在尝试将数据放入数据库之前,您不会转义得到的数据,因此它容易受到SQL注入的攻击


希望这对您有所帮助,如果您有任何问题,请发表评论

您试图将大于int限制的整数放入数据库。我建议使用VARCHAR(电话号码不是整数)-考虑一些类似于+420 730 500 500的情况。此外,在尝试将数据放入数据库之前,您不会转义得到的数据,因此它容易受到SQL注入的攻击


希望这对您有所帮助,如果您有任何问题,请发表评论。我建议切换到电话号码的BIGINT,因为它默认为64位,int为32位(2147483647=2^31-1)。INT(20)中的20指定mysql显示的字符数,因此在填充为零的情况下,它将显示2147483647,前面有10个零

更新: 找到我读过的地方

我建议切换到电话号码的BIGINT,因为默认情况下它是64位的,int是32位的(2147483647=2^31-1)。INT(20)中的20指定mysql显示的字符数,因此在填充为零的情况下,它将显示2147483647,前面有10个零

更新: 找到我读过的地方

电话号码不应为整数,请尝试varchar。您可以使用此代码进行SQL注入。这是int1的限制。使用事先准备好的陈述。2.不要引用数字。3.不要将
int
数据类型用于电话号码。4.代码不是活的,“只是为了测试”并不是放松将变量注入SQL的坏习惯的有效借口。5.参见第1条和第4条。检查整数限制电话号码不应为整数,请尝试varchar。您可以使用此代码进行SQL注入。这是整数限制。使用事先准备好的陈述。2.不要引用数字。3.不要将
int
数据类型用于电话号码。4.代码不是活的,“只是为了测试”并不是放松将变量注入SQL的坏习惯的有效借口。5.参见第1条和第4条。检查整数限制。您可以正确地知道
int
是32位的,
bigint
是64位的,但这与系统是32位还是64位完全无关。我的错误。我应该在发布之前验证32位系统注释。您正确地认为
int
是32位的,
bigint
是64位的,但这与系统是32位还是64位完全无关。我的错误。我应该在发布之前验证32位系统注释。
$telnr = $_POST['telefonas'];
$db_handle = new mysqli("localhost", "root", "xxx", "Database");
$query = "UPDATE table SET tel_nr = '$telnr' WHERE username = '$username'";
$result = $db_handle->query($query);