我执行了以下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有时会令人愤怒地“松散”。
答案 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未在单引号内解析。如果你回显出那个字符串,你会看到这个。
建议:对整个字符串使用双引号,并在查询中使用的文本值周围使用单引号。