2011-08-03 79 views
1

我有一个表中的整数列,当我做比较下面的代码似乎工作。PDO绑定数据类型和比较

$myLimit = 10; 
$sth = $db->prepare("SELECT * FROM table WHERE number<:myLimit"); 
$sth->bindParam(':myLimit',$myLimit); // default datatype is PDO::PARAM_STR 
$sth->execute(); 
$result = $sth->fetchAll(); 

我应该使用PDO :: PARAM_INT作为bindParam的第三个参数吗? 还有什么关于实数我不能使用PDO :: PARAM_INT为他们,因为它会围绕他们。

+3

无论如何,它将舍入整数列。问题可能是,为什么不使用'PDO :: PARAM_INT'? – hakre

+0

为什么不使用PARAM_INT并在你的float值上做一个ceil(),所以4.1作为5而被认为大于4? – Atomox

回答

0

PHP中的数字处理非常糟糕。为了传递大量数据,我的建议是将它们保持为字符串。

编辑我刚刚测试了数字处理; PARAM_INT大型数字串正常工作,所以你不必使用PARAM_INT但有在被精确:)

至于彩车没有坏处,你应该使用PARAM_STR大规模地失去精度超过他们。