1

我正在执行以下 SQL:

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

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

My trigger_priceis a varchar[10],就像我说的那样,当我用$floatUsdTrigger数字替换时很好;有任何想法吗?

我做了很多研究,但找不到答案;作为一个客观的 C 开发人员,我发现 PHP 有时非常“松散”。

4

2 回答 2

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);
}
于 2013-10-08T17:26:13.490 回答
3

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

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

于 2013-10-08T17:23:13.473 回答