SQL更改输入请求

时间:2012-08-15 05:28:50

标签: php mysql

我正在创建一个表单,在我的个人网站上向我提交消息。无论如何,我创建的脚本有一个变量$pnumber,它代表某人提交的电话号码。然而,当它到达MySQL数据库时,它总是出现同样的事情:2147483647。无论我在表单中输入什么号码,它总是以2147483647形式出现。其他一切都很好,我很确定我的PHP脚本没有改变它。我不确定这是否与我在PHPMyAdmin中配置列的方式有关,但这是我没有得到的:为什么要更改?

PHP:

$pnumber = $_REQUEST['pnumber'];
$largetext = $_REQUEST['comment'];
if ($pnumber == "") {
    $pnumber = 0;   
}
try {
    $sql = "INSERT INTO contact SET
             fname = :fname,
             lname = :lname,
             email = :email,
             pnumber = :pnumber,
             mtext = :largetext,
             date = CURDATE()";
    $s = $pdo->prepare($sql);
    $s->bindValue(':fname',$firstname);
    $s->bindValue(':lname',$lastname);
    $s->bindValue(':email',$email);
    $s->bindValue(':pnumber',$pnumber);
    $s->bindValue(':largetext',$largetext);
    $s->execute();

在数据库中,PHPMyAdmin将pnumber显示为

PHPMyAdmin table

为什么数字会被更改?

3 个答案:

答案 0 :(得分:1)

这个数字2147483647听起来像upper bound of a signed integer,所以int可能不是该列的正确数据类型。也许试试bigint。

答案 1 :(得分:0)

如果没有表格的代码,有点难以理解。你能把表格的代码放进去吗?我不认为它与mysql有任何关系,除非你有这个电话号码作为默认值。您可以通过而不是$pnumber = $_REQUEST['pnumber'];来测试它,以编写类似$pnumber = 201222222;的内容。此外,您不应将电话号码存储为int,我建议您更好charvarchar

答案 2 :(得分:0)

int to string更改 pnumber 类型,同时转到Phpmyadmin并添加相同的数字,然后您将获得相同的int值,因此将其更改为字符串,因为它是int的上限值< / p>