显示今天的生日


Displaying today's birthdays

我想显示正在过生日的用户的用户名。生日以DATE形式存储在数据库的birthdays列中。

下面是我当前的代码:

<?php
function birthday_today(){
    $current_date = date('m-d');
    $row = mysql_query("SELECT `username`, `birthday` FROM `users` WHERE MONTH(birthday) = MONTH(NOW()) AND DAY(birthday) = DAY(NOW())");
    if (date('m-d', strtotime($row['birthday'])) == date('m-d')) {
        return '<ul><li>' . implode('</li><li>', $row['username'], '</li></ul>');
    }
}
echo birthday_today();
?>

然而,这似乎没有回显任何内容。我尝试了几种不同的方法将数据放入echo中,但到目前为止还没有成功。有人能帮我吗?

您需要从结果中提取数组。

$users = array();
$row = mysql_query("SELECT `username`, `birthday` FROM `users` WHERE MONTH(birthday) = MONTH(NOW()) AND DAY(birthday) = DAY(NOW())");
while ($result = mysql_fetch_array($row)) {
    if (date('m-d', strtotime($result['birthday'])) == date('m-d')) {
        $users[] = $result['username'];
    }
}

// output results
echo "<ul>";
foreach ($users as $user) {
   echo "<li>".$user['username']."</li>";
}
echo "</ul>"

还有另一种方法:

<?php
// just returns the users having a birthday
function birthday_today() {
    $result = mysql_query("SELECT `username` FROM `users` WHERE MONTH(birthday) = MONTH(NOW()) AND DAY(birthday) = DAY(NOW())");
    $users = array();
    while ($row = mysql_fetch_assoc($result))
        $users[] = $row['username'];
    return $users;
}
// make a unordered-list out of the users having birthday
$ul = "<ul>";
foreach(birthday_today() as $username)
    $ul .= "<li>$username</li>";
$ul .= "</ul>";
echo $ul;
?>