比较SQL中的浮点数,PHP

时间:2013-10-08 17:20:47

标签: php mysql pdo

我执行了以下SQL:

$query = $pdo->prepare('SELECT * FROM active_notifications WHERE direction = ">"
AND trigger_price > "$floatUsdTrigger" ');

如果我用数字替换$floatUsdTrigger,它会按预期工作;但它无法使用我的$floatUsdTrigger变量。此变量是float强制转换为string,当我执行vardump时,它看起来正确,例如(float) 120.00

我的trigger_pricevarchar[10],就像我说用$floatUsdTrigger替换数字时的说法一样好;任何想法?

我做了大量的研究,找不到答案;作为一名客观的C开发人员,我发现PHP有时会令人愤怒地“松散”。

2 个答案:

答案 0 :(得分:4)

您正在使用->prepare不要使用变量插值!

这样做:

$query = $pdo->prepare('SELECT * FROM active_notifications WHERE direction = ">" AND trigger_price > ?');
$query->execute(array($floatUsdTrigger));

while($row = $query->fetch()){
    // var_dump($row);
}

答案 1 :(得分:2)

$ floatUsdTrigger var未在单引号内解析。如果你回显出那个字符串,你会看到这个。

建议:对整个字符串使用双引号,并在查询中使用的文本值周围使用单引号。