【问题标题】:PHP Mysql datetime search with PDO使用 PDO 进行 PHP Mysql 日期时间搜索
【发布时间】:2016-05-30 08:57:54
【问题描述】:

努力在 DateTime 列上返回结果。我只是得到空值。 尝试了不同的方法,但最终得到了相同的结果。 我认为当有空格时问题就来了?!?

代码:

$myStart=$_POST['jQueryDateStart'];
$myEnd=$_POST['jQueryDateEnd']; 
$myStart = $myStart." 00:00:00";
$myEnd = $myEnd." 23:59:59";

if ($myStart>$myEnd ){
    echo "<script>";
    echo "  alert('Start Date must less than End Date');";
    echo "  window.location.href='location.php';";
    echo "</script>";
    exit();
}
$mytable = $_SESSION["SESS_myuserid"];

$stmt = $db->prepare("SELECT * FROM ".$mytable." WHERE PTime BETWEEN ':SearchS' AND ':SearchE'");
$stmt->bindParam(':SearchS', $myStart, PDO::PARAM_STR);
$stmt->bindParam(':SearchE', $myEnd, PDO::PARAM_STR);   

$stmt->execute();

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

echo $result[0]['PLong'];
echo $myStart;
echo $myEnd; 
echo $mytable;
exit();

开始日期数据:2016-05-22 00:00:00 结束日期数据:2016-05-27 23:59:59

列中时间示例:2016-05-26 13:29:24

我已经尝试在变量周围使用 Single ' ',如语句代码所示,但没有相同的结果。

【问题讨论】:

  • PTime 列的数据类型是什么
  • 允许为空的日期时间
  • 从占位符中去掉引号

标签: php html mysql pdo location


【解决方案1】:

Wrap off quotes 来自占位符,否则它会将您的查询创建为 WHERE PTime BETWEEN ''2016-05-22 00:00:00'' AND ''2016-05-27 23:59:59''

随便用

$stmt = $db->prepare("SELECT * FROM ".$mytable." WHERE PTime BETWEEN :SearchS AND :SearchE");

【讨论】:

  • 是的,它现在可以工作了.. 不知道为什么上周它不工作了.. 所以我很困惑..谢谢
猜你喜欢
  • 2011-03-21
  • 2021-12-06
  • 1970-01-01
  • 2013-10-13
  • 2021-07-06
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多