gpt4 book ai didi

php - 尝试使用具有不同模式的正则表达式在查询中过滤同一列两次

转载 作者:行者123 更新时间:2023-11-29 19:42:42 25 4
gpt4 key购买 nike

除了基本的 SELECT * FROM blah WHERE blah 之外,我对 mysql 和 php 查询相当陌生,所以我对这里的一些东西很感兴趣。我正在尝试根据天气状况和月相浏览照片。现在,天气、月相和照片存储在 3 个不同的表中,并且所有 3 个表存储的日期都不同。这超出了我对天气和月相的控制范围,因为它们基于第 3 方 API。

无论如何,这是我当前的查询:

$pics = "SELECT * FROM photos WHERE cam_id IN ($cams)";
if($moon == 1){ $pics .= " AND photo_date REGEXP '$phase_dates'";}
if($cond == 1){ $pics .= " AND photo_date REGEXP '$cond_dates'";}

$phase_dates 和 $cond_dates 的数据都是使用以下代码的内爆数组:

$cond_dates = implode("|",$cond_date);
$phase_dates = implode("|",$phase_date);

唯一的区别是 $cond_dates 需要更具体,因为天气状况每 20 分钟跟踪一次,而月相每天一次。因此,我使用:

date('Y:m:d H', $cdate);

对于 $cond_date,我使用:

date('Y:m:d',$pdate);

$phase_date。

对于条件,返回 2016:11:16 09,对于阶段,返回 2016:11:16。我的查询结果如下:

$pics = "SELECT * FROM photos 
WHERE cam_id
IN ($cams)
AND photo_date REGEXP '2016:11:16|2016:11:17'
AND photo_date REGEXP '2016:11:16 09|2016:11:16 10|2016:11:17 09'";

但即使匹配,我也没有得到任何结果。当两个日期集都使用 Y:m:d 时,我得到匹配项,但是当我添加小时时,没有结果。有没有一种方法可以在不丢失具体时间的情况下获得匹配项?

最佳答案

它不会匹配,因为 photo_date 不会同时是 2016:11:16 和 2016:11:17。这里需要使用的是OR运算符。因此查询将如下所示:

SELECT * FROM photos 
WHERE cam_id
IN ($cams)
AND (photo_date REGEXP '2016:11:16|2016:11:17'
OR photo_date REGEXP '2016:11:16 09|2016:11:16 10|2016:11:17 09');

关于php - 尝试使用具有不同模式的正则表达式在查询中过滤同一列两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41252800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com