Mysql以不同的方式存储数字

时间:2015-04-24 13:40:52

标签: php mysql

我正在尝试将电话号码存储在mysql数据库中。但它存储了不同的价值。

<form align="center" method="post" action="sendingdata.php" enctype="multipart/form-data">

<label for="phone">Phone Number </label></br>
            <input type="number" name="phone" id="phone" placeholder="90000 12345"/>


            <input class="submit" type="submit" />


以下是sendingdata.php

$phone = $_POST['phone'];
$q = sprintf("insert into posts(title,price,description,imagepath,name,phone) values('%s',%d,'%s','%s','%s','%d')", mysqli_real_escape_string($conn, $title), mysqli_real_escape_string($conn, $price), mysqli_real_escape_string($conn, $description), mysqli_real_escape_string($conn, $imageName),mysqli_real_escape_string($conn, $username),mysqli_real_escape_string($conn, $phone));

if (mysqli_query($conn, $q)) {
    header('Location: index.php');
    echo "success";
} 

我尝试输入的值是90000 00000.但是存储在数据库中的值是2147483647

ps:mysql中的数据类型是BIG INT

3 个答案:

答案 0 :(得分:3)

这是maximum INT大小。请考虑使用BIGINTVARCHAR column或具有固定宽度的CHAR列。

INT的最大尺寸为&#34; 2147483647&#34;签署了&#34; 4294967295&#34;无符号。而具有固定长度的CHAR可以是任何长度为X位/字符的数字。如果您使用CHARVARCHAR列,请务必先验证输入,因为它会允许值中的数字以上。

答案 1 :(得分:2)

尝试将数据类型设置为VARCHAR(或CHARACTER(n))而不是BIG INT。电话号码基本上是一个信息,不需要用它来计算,所以当你存储在字符串类型数据中时它会更好。

答案 2 :(得分:0)

我认为您的手机字段的数据类型为int,因此无法通过将其更改为bigint来存储90000 00000。