我正在执行以下 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 不会在单引号内解析。 如果您回显该字符串,您将看到这一点。
建议:对整个字符串使用双引号,并在作为查询一部分的文本值两边使用单引号。