首页 > 解决方案 > 试图将字符串更改为 Date PHP

问题描述

我正在设计一个租用派对装备的网站。基本上我想看看某个项目在某个日期范围内是否可用。用户在表单中输入日期,并检查该项目在此日期范围内是否可用

foreach ($_SESSION['cart'] as $item)
{
    $q = "SELECT quan_on_hand, equip_description FROM equipment where equip_id =".$item['id'];
    $result = $db->query($q);
    $row = mysqli_fetch_assoc($result);
    $quantity_available = $row['quan_on_hand'];
    $equip_description = $row['equip_description'];
    
    $q = "SELECT SUM (quantity) AS 'TotalRented' from orders, order_details";
    $q .= "where equip_id =".$item['id']." AND order_details.order_ID = orders.order_id AND ";
    $q .= "(( start_date >=".$start_date." AND end_date <= ".$end_date.") OR (start_date <= ".$start_date." AND end_date >= ".$end_date;
    $q .= ") OR ( start_date <= ".$end_date." AND end_date >= ".$end_date.") OR (start_date <= ".$start_date." AND end_date >= ".$start_date."));";
    

我认为问题在于变量 $start_date 和 $end_date 是字符串,因此无法在 mysql 查询中进行比较。数据以 YYYY-MM-DD 的形式存储在 mysql 中。

基本上我如何将日期字符串更改为这种格式的日期对象,以便可以在 mysql 查询中进行比较

我回显了代码并将其直接放入我的 mysql 数据库中,这就是我得到的输出

SELECT SUM(quantity) AS 'TotalRented' from orders, order_details where equip_id =12 AND order_details.order_ID = orders.order_id AND (( start_date >=2021-03-04 AND end_date <= 2021-03-12) OR (start_date <= 2021-03-04 AND end_date >= 2021-03-12) OR ( start_date <= 2021-03-12 AND end_date >= 2021-03-12) OR (start_date <= 2021-03-04 AND end_date >= 2021-03-04));

当我将它放入我的 mysql 数据库时它不起作用,因为我需要在日期周围加上引号,我如何在我的 php 代码中执行此操作以便它会自动输入

标签: phpmysql

解决方案


要添加单引号,只需将它们放在双引号之外。

$q = "SELECT SUM (quantity) AS 'TotalRented' from orders, order_details ";
$q .= "where equip_id =".$item['id']." AND order_details.order_ID = orders.order_id AND ";
$q .= "(( start_date >= '".$start_date."' AND end_date <= '".$end_date."') OR (start_date <= '".$start_date."' AND end_date >= '".$end_date;
$q .= "') OR ( start_date <= '".$end_date."' AND end_date >= '".$end_date."') OR (start_date <= '".$start_date."' AND end_date >= '".$start_date."'));";

推荐阅读