【发布时间】:2016-05-03 16:35:45
【问题描述】:
我正在使用 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 中带有“inscription”且“cm_values”优于 $date...的条目...
我不知道我做错了什么?
感谢您的帮助,并原谅我的英语......
编辑:我使用时间戳来存储日期,所以 $date 是数字。
再次编辑: 如 cmets 所述,我的参数格式有问题。类似的东西
$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() 中使其有效...
【问题讨论】:
-
我猜在第二个例子中你比较的是
strings而不是dates。c_metas可能是 EAV 表,其中cm_values列作为文本。试试:WHERE CAST(cm.cm_name AS DATE) > -
我实际上使用时间戳(我知道是老派)所以 specific_date, $date 是数字。
标签: php mysql pdo where numeric