【问题标题】:Integer ADD UP Weird Result [duplicate]整数加起来奇怪的结果[重复]
【发布时间】:2014-12-07 14:02:13
【问题描述】:

我从表中选择一个整数值并尝试将其加一,但结果却是另一回事。

 TABLE
 id            index  -> BIG INT(20)
 ---------- ----------
 1           191000000000003

<?php 
    $sql='SELECT index from table where id='1'';
    $q=$this->db->query($sql);
    $r=$q->row->array();
    $index= $r['index'];
    $id=$index+1;
    echo $id;    // returns 1.91E+14 
    echo $index; // returns 191000000000003 

    $id=(int)$transfer_index+1;
    var_dump($id); // returns (float) 2147483648
    var_dump($transfer_index); // returns string

  expected result: 191000000000004
?>

【问题讨论】:

  • 您确实意识到 index 是 MySQL 保留字 dev.mysql.com/doc/refman/5.5/en/reserved-words.html - 只是为了它,table 也是如此,但我怀疑这只是一个示例名称。
  • 我只是在我的问题中使用了一个匿名的 column_name。 @Fred-ii-
  • 您能否发布var_dump$id$index。我几乎可以肯定$index 是一个字符串,并且在您添加 1 时被强制转换为浮点数。“1.91E+14”只是标准的表单编号语法。如果“标准形式”是问题,请查看this question
  • 我把发布的代码和图表从字面上看/从表面上看;)
  • @Scopey 是的,你是对的。更新了我的问题。我如何获得预期的结果?

标签: php mysql sql codeigniter integer


【解决方案1】:

试试这个:

$sql="SELECT (index + 1) as ind from table where id='1'";
$q=$this->db->query($sql);
$index=$q->row()->ind;
echo $index;

【讨论】:

  • 当我加一时,它变成一个浮点型数字。这不是解决方案。
【解决方案2】:

您机器上的最大整数值小于 BIG_INT 字段中存储的值。

【讨论】:

    猜你喜欢
    • 2020-10-22
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 2018-05-16
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多