为什么我的“where condition”与数字不起作用?

时间:2016-05-03 16:35:45

标签: php mysql pdo where numeric

我正在使用php5 +和MySQL。

我无法弄清楚为什么我的操作不起作用:

$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date');
$prepare->execute(array(':specific_date' => $date));

使用fetchAll,这为我提供了cm_name中带有“铭文”的所有条目。 另一方面:

$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > '.$date.' ');
$prepare->execute();

完美返回cm_name中带有“铭文”的条目,并且“cm_values”优于$ date ...

我无法弄清楚我做错了什么?

感谢你的帮助,原谅我的英语......

修改:我正在使用时间戳存储日期,因此$ date是数字。

再次编辑:如评论中所述,我的参数格式存在问题。像

这样的东西
$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date');
$prepare->bindParam(':specific_date', $date, PDO::PARAM_INT);
$prepare->execute();

有效...所以我现在必须得到如何使它在execute()...

中工作

2 个答案:

答案 0 :(得分:0)

:specific_date”是一个字符串,您想要调用变量$date。它们是不同的东西,所以它们会产生不同的结果。

答案 1 :(得分:0)

实际上,

$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date');
$prepare->bindValue(':specific_date', $date, PDO::PARAM_INT);
$prepare->execute();

修复了整件事。 谢谢你的答案。