比较 SQL、PHP 中的浮点数


Comparing floats in SQL, PHP

我正在执行以下 SQL:

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

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

我的trigger_price是一个varchar[10],就像我说的,当我用数字替换$floatUsdTrigger时很好; 有什么想法吗?

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

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

这样做:

$query = $pdo->prepare('SELECT * FROM active_notifications WHERE direction = ">" AND trigger_price > ?');
$query->execute(array($floatUsdTrigger));
while($row = $query->fetch()){
    // var_dump($row);
}

$floatUsdTrigger var 不会在单引号内解析。 如果您回显该字符串,您将看到这一点。

建议:对整个字符串使用双引号,并在作为查询一部分的文本值两边使用单引号。