PHP匹配2个代码的输出

PHP匹配2个代码的输出,php,Php,我需要匹配2代码的结果格式: 我需要得到这个的输出/格式: $event_day = $year.'-'.$month.'-'.$list_day; // $event_day 与此匹配: DATE_FORMAT(date,'%Y-%m-%d') 完整代码: $query = " SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date FROM table WHERE user_id = '$session_user_id'

我需要匹配2代码的结果格式:

我需要得到这个的输出/格式:

$event_day = $year.'-'.$month.'-'.$list_day;  // $event_day
与此匹配:

DATE_FORMAT(date,'%Y-%m-%d')
完整代码:

$query = "
  SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date 
  FROM table 
  WHERE user_id = '$session_user_id' 
    AND date BETWEEN '$year-$month-1' AND '" . date("Y-m-t", strtotime("$year-$month-1")) . "' 
    AND active = 1";
我的问题是$event_day只显示10月、11月和12月的事件

我在下面的代码中遇到了类似的问题:

$query = "
  SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date 
  FROM table 
  WHERE user_id = '$session_user_id' 
    AND date LIKE '$year-$month%' 
    AND active = 1";
它是用这个代码固定的:

$query = "
  SELECT title, DATE_FORMAT(date,'%Y-%m-%d') AS date 
  FROM table 
  WHERE user_id = '$session_user_id' 
    AND date BETWEEN '$year-$month-1' AND '" . date("Y-m-t", strtotime("$year-$month-1")) . "' 
    AND active = 1";

有人知道我是如何解决这个问题的吗?

如果您只是想在SQL查询中匹配日期,而这正是您所追求的,那么您可以将日期作为字符串传递,每端都有一个。这将告诉SQL将字符串解析为日期,而您提供的格式并不重要。例外情况是,它可能会混淆美国/欧盟日期格式,如dd/mm/yyyy和mm/dd/yyyy

$query = "SELECT title, DATE_FORMAT(myDate,'%Y-%m-%d') AS formattedDate 
          FROM table 
          WHERE user_id = '$session_user_id' 
          AND (myDate BETWEEN #$year-$month-1# AND #$year-$month-1#) 
          AND active = 1";
这种格式应该可以工作,但您的查询是选择在同一日期之间的记录,因此您将只获得实际在该日期的记录。您最好使用WHERE date=$year-$month-1

编辑:假设您的日期字段数据类型在数据库中正确设置为日期/时间

edit2:date通常是数据库中的保留字,不应该真正用于字段名和变量。见上面编辑的代码


此外,我建议使用php使用函数格式化日期,而不是在查询中格式化日期。这样可以更灵活地实际使用脚本中的日期。

我不确定是否理解您的问题。。。到底是什么问题?格式?或者你没有从数据库中得到预期的结果?表中的日期字段是什么类型的?你到底想达到什么目的?获取当前月份的所有事件?例如:此查询将仅显示10月、11月和12月的事件日期。$query=从表中选择标题、日期\u格式日期、%Y-%m-%d'作为日期,其中user\u id=“$session\u user\u id”和日期类似于“$year-$MOUNT%”且active=1-将代码更改为:$query=SELECT title,DATE\u FORMATdate,“%Y-%m-%d”作为表中的日期,其中user\u id=“$session\u user\u id”和日期介于“$year-$month-1”和“$month-1”之间。dateY-m-t,标准时间$year-$month-1'和active=1;。。。。因此,上面的方法现在起作用了,但现在是:$event_day=$year.-'.$month.-'.$list_day。。。仅显示十月、十一月和十二月事件。。。同样的问题?那么应该显示什么?抱歉,这不会返回任何结果。另一个查询实际上是获取记录的:$event_day=$year.-'.$month.-'.$list_day;i将$events[$event_day]{foreach$events[$event_day]设置为$event{$calendar.=;}…除了10月、11月和12月之外,这不会捕获和显示它们。希望这能有所帮助。如果不知道这段代码的总体目标是什么,很难知道您的问题是什么。我可以看到您正在尝试使用php变量查询数据库,但这就是范围