玩家:
64位linux
PHP5(ZendFramework1.10.2)
PostgreSQL 8.3版
原则1.2
通过Flash/Flex客户端,我得到一个8字节的整数值。
数据库中的字段是BIGINT(8字节)
PHP_INT_SIZE显示系统支持8字节整数。
按原样和intval()输出代码中的值会导致以下情况:

Plain:  1269452776100
intval: 1269452776099

浮动舍入失败?
但真正让我发疯的是
错误:整数的输入语法无效:“1269452776099.000000”
当我试图在查询中使用它时。比如:
Doctrine_Core::getTable('table')->findBy('external_id',$external_id);


Doctrine_Core::getTable('table')->findBy('external_id',intval($external_id));

我该怎么处理?或者我如何给原则一个浮点数,它应该在bigint字段上使用?
非常感谢您的帮助!
短暂性脑缺血发作
编辑:
从模型:
    $this->hasColumn('external_id', 'integer', 8, array(
     'type' => 'integer',
     'length' => 8,
     'fixed' => false,
     'unsigned' => false,
     'notnull' => false,
     'primary' => false,
     ));

数据库字段是bigint 8字节。
编辑2:
http://bugs.php.net/bug.php?id=48924似乎是问题的根源

最佳答案

正如您已经提到的,您点击了this bug
要解决此问题,请将参数作为字符串传递,并确保将其转换为数据库端的BIGINT

$q = Doctrine_Query::create();
$q->from('table AS t')
  ->where("t.external_id = CAST(:external_id AS BIGINT)", array(':external_id'  => $external_id))
  ->limit(1);
$result = $q->execute();

关于php - 具有Doctrine和PHP的8字节整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2510282/

10-09 21:55