PHP的开放时间和使馆假期

| 我一直在使用以下代码:
 $rawsql = \"SELECT 
*
FROM 
    _erc_foffices n 
INNER JOIN 
    _erc_openings o ON n.id = o.branch_id AND o.dotw = DAYOFWEEK(CURRENT_DATE()) 
INNER JOIN 
    _erc_openings_times t ON o.id = t.opening_id
WHERE 
(
    UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) BETWEEN UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), \' \', t.open)) AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), \' \', t.close)) 
) 
AND 
(
    n.id = %d
)
;\";

$sql = sprintf($rawsql, mysql_real_escape_string($id));

$result = mysql_query($sql);

/*These if & while statements decide whether or not the information should be displayed. If no results are returned from the query above then an alternative message is shown.*/

if(mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

        echo \"<div class=\'address\'><p>\" . $row[\"title\"] . \"<br/>\";
        echo $row[\"address_1\"] . \"<br/> \" . $row[\"address_2\"] . \"<br/> \" . $row[\"address_3\"] . \"<br/> \" . $row[\"address_4\"] . \"<br/> \" . $row[\"address_5\"] . \"</p>\";
        echo \"<div class=\'buttons\'><img src=\'http://localhost/erc/images/texttouser_button.png\'/><br/><a href=\'\" . $row[\"url\"] . \"\' target=\'blank\'><img src=\'http://localhost/erc/images/website_button.png\'/></a></div></div>\";
        echo \"<div class=\'email\'>\" . $row[\"email\"] . \"</div>\";
        $extra_notes = $row[\"extra\"];

    }
} else {

        $embassy_closed = mysql_query(\"SELECT * FROM _erc_foffices WHERE id = \'$embassy_id\'\");

        while($row = mysql_fetch_array($embassy_closed))
                      {

        echo \"<div class=\'address\'><p>\" . $row[\"title\"] . \"<br/>\";
        echo $row[\"address_1\"] . \"<br/> \" . $row[\"address_2\"] . \"<br/> \" . $row[\"address_3\"] . \"<br/> \" . $row[\"address_4\"] . \"<br/> \" . $row[\"address_5\"] . \" <font color=\'red\'>The embassy is closed.</font></p>\";
        echo \"<div class=\'buttons\'><img src=\'http://localhost/erc/images/texttouser_button.png\'/><br/><a href=\'\" . $row[\"url\"] . \"\' target=\'blank\'><img src=\'http://localhost/erc/images/website_button.png\'/></a></div></div>\";
        echo \"<div class=\'email\'>\" . $row[\"email\"] . \"</div>\";
        $extra_notes = $row[\"extra\"];


                      }


}
它从数据库中获取使馆的开放时间,并确定使馆当前是否开放。如果不是,则会显示一条消息,说明“使馆已关闭”。现在,我需要添加公共假期,因此我将查询更改为如下所示:
    $rawsql = \"SELECT 
    *
    FROM 
        _erc_foffices n 
    INNER JOIN 
        _erc_openings o ON n.id = o.branch_id AND o.dotw = DAYOFWEEK(CURRENT_DATE()) 
    INNER JOIN 
        _erc_openings_times t ON o.id = t.opening_id
        LEFT JOIN 
    _erc_holidays h ON h.branch_id = n.id
    WHERE 
    (
        UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) BETWEEN UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), \' \', t.open)) AND UNIX_TIMESTAMP(CONCAT(CURRENT_DATE(), \' \', t.close)) 
    ) 
    AND 
    (
        n.id = %d
    )
        AND
(
    UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) 
    NOT BETWEEN UNIX_TIMESTAMP(h.begins_at) AND UNIX_TIMESTAMP(h.ends_at)
)
        ;\";
但这只会输出两次地址/电子邮件等。 有人可以指出我做错了什么吗? 谢谢你的帮助 编辑:我现在已经解决了这个问题,只是使用了第二个查询和if / else循环。     
已邀请:
我不会自称是专家,并且您的加入看起来很复杂,但是以我的经验,如果您在查询中重复,则说明您没有正确分组,因此我看不到GROUP BY全部在您的查询中。 希望能有所帮助。 顺便说一句...您在哪里获取公共假期数据?我目前正在寻找完全相同的东西,这就是我遇到这篇文章的方式。     
使用第二个查询和if / else循环,它可以按我的要求工作。     

要回复问题请先登录注册