mySql意外保存的整数,与输入的不同

时间:2015-05-22 15:26:35

标签: mysql

在开始之前,我意识到我可以使用php创建随机数函数,但出于我自己的原因,它必须是javascript。

我有一个生成随机数的函数,它会保存在数据库中。为了做到这一点,我通过表单提交它,但是当它被提交时,数据库中会保存一个不同的整数。

随机数,例如:

6108784240204841

在我的数据库中生成这个:

-223602981

HTML

<form action="submit.php" method="post">
        <input type="text" name="number" id="number">
        <button type="submit"></button>
</form>

JS

 $randomNumber = Math.floor(Math.random()*1E16);
 $('#number').val($randomNumber);

PHP

<?php
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        if (!empty($_POST['id'])) {
            $inputNumber = filter_var($_POST['number'], FILTER_VALIDATE_INT);
        };
    };

try {
    $db = new PDO('mysql:host=localhost;dbname=myDb;charset=utf8', 'myDb_admin', 'myDb_password');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    $stmt = $db->prepare('INSERT INTO user (number) VALUES (:number)');
    $stmt->bindParam(':number', $number);

    $number = $inputNumber;

    $stmt->execute();

} catch(PDOException $e) {
    return $e->getMessage();
};

数据库结构

number    
int(100)    
Primary

1 个答案:

答案 0 :(得分:2)

您尝试保存过大的数字时使用BIGINT

number
BIGINT(20)
Primary

Integer Types