【问题标题】:PDO bind data type and comparisonPDO 绑定数据类型和比较
【发布时间】:2011-10-19 12:09:36
【问题描述】:

我在表中有一个整数列,当我进行比较时,以下代码似乎可以工作。

$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 实数呢,因为它会将它们四舍五入。

【问题讨论】:

  • 无论如何它都会对整数列进行四舍五入。问题可能是,为什么不使用PDO::PARAM_INT
  • 为什么不使用 PARAM_INT 并对你的浮点值执行 ceil(),所以 4.1 eval 为 5,并且被认为大于 4?

标签: php mysql


【解决方案1】:

PHP 中的数字处理是出了名的糟糕。要传递大数字,我的建议是将它们保留为字符串。

编辑我刚刚测试了数字处理; PARAM_INT 适用于较大的数字字符串,因此您不必使用 PARAM_INT,但准确无误 :)

至于浮点数,您应该使用PARAM_STR 传递它们,这样会大大降低精度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    相关资源
    最近更新 更多