【问题标题】:Mysql stores the number differentlyMysql存储数字的方式不同
【发布时间】:2015-04-24 13:40:51
【问题描述】:

我正在尝试将电话号码存储在 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

【问题讨论】:

  • MySQL数据库中列的数据类型是什么?
  • 您尝试以十进制格式存储数据,请检查您的字段类型。
  • mysql中的数据类型是BIG INT @mcklayin
  • 电话号码不是数字,存储文本或varchar
  • 数据类型显然不是bigint。另外,@cske 所说的 - 以文本格式存储电话号码。

标签: php mysql


【解决方案1】:

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

INT 的最大大小是“2147483647”是有符号的,“4294967295”是无符号的。而具有固定长度的 CHAR 可以是 X 位/字符长的任何数字。如果您使用 CHARVARCHAR 列,请务必先验证您的输入,因为它允许值中包含多个数字。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-05
      • 2022-01-27
      • 2010-10-29
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多