代码之家  ›  专栏  ›  技术社区  ›  Vae

为什么我的数字“where条件”不起作用?

  •  -3
  • Vae  · 技术社区  · 8 年前

    我正在使用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中带有“tension”的所有条目。 另一方面:

    $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是数字的。

    再次编辑: 正如评论中所说,我的param格式有问题。有点像

    $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 回复  |  直到 8 年前
        1
  •  0
  •   Nana Partykar    8 年前

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

        2
  •  0
  •   Vae    8 年前

    事实上

    $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();
    

    修复了整个问题。 谢谢你们的回答。