日期字段和日期字符串php mysql之间的比较

日期字段和日期字符串php mysql之间的比较,php,mysql,Php,Mysql,我在做一个搜索,搜索效果很好。查询中唯一给我带来问题的部分是当我 比较日期((LiveTrip.TripDate)>=日期(?) 它没有给我一个错误,只是没有带回我用HeidiSQL测试过的任何东西,而且它可以工作。日期以YYYY-MM-DD的格式发布。比较字段在数据库中具有日期数据类型。有什么建议吗 $Limit = $_POST['limit']; $Offset = $_POST['offset']; $TripType = $_POST['TripType']; $datesea

我在做一个搜索,搜索效果很好。查询中唯一给我带来问题的部分是当我 比较日期((LiveTrip.TripDate)>=日期(?)

它没有给我一个错误,只是没有带回我用HeidiSQL测试过的任何东西,而且它可以工作。日期以YYYY-MM-DD的格式发布。比较字段在数据库中具有日期数据类型。有什么建议吗

 $Limit = $_POST['limit'];
 $Offset = $_POST['offset'];
 $TripType = $_POST['TripType'];
 $datesearch = $_POST['datesearch'];
 $Departure = "%{$_POST['Departure']}%";
 $Destination= "%{$_POST['Destination']}%";

  $stmt = $conn->prepare("SELECT
  UsersMain.Id,
  UsersMain.Name,
  UsersMain.Surname,
  LiveTrip.Id,
  LiveTrip.DepstreetAddress,
  LiveTrip.DepSubTown,
  LiveTrip.DestStreetAddress,
  LiveTrip.DestSubTown,
  LiveTrip.SeatsAvailable,
  LiveTrip.TripDate,
  LiveTrip.TripTime,
  LiveTrip.Contribution,
  LiveTrip.Comments
  FROM
  LiveTrip
INNER JOIN UsersMain ON UsersMain.Id = LiveTrip.UserId
WHERE 
LiveTrip.DepSubTown like ? 
AND
LiveTrip.DestSubTown like ? 
AND LiveTrip.TripStatus =1 AND DATE((LiveTrip.TripDate) >= DATE(?)) AND  TripType=? LIMIT ? OFFSET?");

$stmt->bind_param("ssssss",$Departure, $Destination, $TripType,$datesearch,    $Limit, $Offset);

 /* execute query */
 $stmt->execute();

 /* Store the result (to get properties) */
 $stmt->store_result();

 /* Get the number of rows */
 $num_of_rows = $stmt->num_rows;

   $stmt->bind_result($id,$Name,$Surname,$Tid,$DepstreetAddress,$DepSubTown,$DestStreetAddress,$DestSubTown,$Seats,$TripDate,$TripTime,$Contribution,$Comment);

like
之间加上空格,就像在
like?
中一样,你看不到任何错误,因为你没有寻找它们!!!添加
ini\u集('display\u errors',1);ini_集(“日志错误”,1);错误报告(E_全部);mysqli_报告(mysqli_报告错误| mysqli_报告严格)到脚本的顶部。这将强制任何
mysqli\uuu
错误生成一个您不能错过或忽略的异常。您的参数不是顺序错误吗?就我所见,它应该是
…$datesearch,$TripType…
,而不是
…$TripType,$datesearch…
。此外,在查询的这一部分,括号没有关闭好:
DATE((LiveTrip.TripDate)>=DATE(?)
如果
LiveTrip.TripDate
的类型为
DATE
,变量
$datesearch
将包含格式为
YYYY-MM-DD
的字符串,那么比较应该非常简单:
LiveTrip.TripDate>=?
。无需强制转换,只需确保
$datesearch
格式正确。在
like
之间留出空格,就像在
like?
中一样,您不会看到任何错误,因为您没有查找它们!!!添加
ini\u集('display\u errors',1);ini_集(“日志错误”,1);错误报告(E_全部);mysqli_报告(mysqli_报告错误| mysqli_报告严格)到脚本的顶部。这将强制任何
mysqli\uuu
错误生成一个您不能错过或忽略的异常。您的参数不是顺序错误吗?就我所见,它应该是
…$datesearch,$TripType…
,而不是
…$TripType,$datesearch…
。此外,在查询的这一部分,括号没有关闭好:
DATE((LiveTrip.TripDate)>=DATE(?)
如果
LiveTrip.TripDate
的类型为
DATE
,变量
$datesearch
将包含格式为
YYYY-MM-DD
的字符串,那么比较应该非常简单:
LiveTrip.TripDate>=?
。无需强制转换,只需确保
$datesearch
格式正确即可。