【发布时间】: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