PHP与2015-06-00呼应为';31日和27日;询问后

PHP与2015-06-00呼应为';31日和27日;询问后,php,Php,在我的数据库中有一行名为game_release,它是一个日期字段 没有具体发布日期的游戏(例如我们知道它将在6月发布)以00输入,例如2015-06-00。这是可行的,如果我的查询包含00,一切都很好,但是 这一天不是显示为0,而是显示为31。我不知道为什么,显然PHP在不完整的日期方面有问题 这是我的代码: <?php $platform_id = 7; $quer

在我的数据库中有一行名为game_release,它是一个日期字段

没有具体发布日期的游戏(例如我们知道它将在6月发布)以00输入,例如2015-06-00。这是可行的,如果我的查询包含00,一切都很好,但是

这一天不是显示为0,而是显示为31。我不知道为什么,显然PHP在不完整的日期方面有问题

这是我的代码:

                    <?php

                    $platform_id = 7;
                    $query="SELECT * FROM game WHERE game_id IN (SELECT game_id FROM game_platform WHERE platform_id=".$platform_id.") AND game_release BETWEEN '2015-12-01' AND '2015-12-31' ORDER BY game_release";

                    $result=mysqli_query($link,$query) or die (mysqli_error());
                    if (mysqli_num_rows($result) > 0)
                    {

                            echo"<table border=1>
                            <tr>
                                <th width=40px>Day</th>
                                <th width=270px>Title</th>
                                <th width=203px>Genre</th>
                                <th width=203px>Developer</th>
                                <th width=205px>Publisher</th>
                                <th width=61px>Retail?</th>
                                <th width=30px height=30px></th>
                                <th width=104px>Note</th>
                            </tr>";

                            while($row=mysqli_fetch_assoc($result))
                           {
                            echo"
                            <tr>
                                <td> ". (new DateTime($row['game_release']))->format("j") ." </td>
                                <td>{$row['game_name']}</td>

                                <td>";
                                $query="SELECT * FROM genre WHERE genre_id=".$row['game_genre']; 
                                $genreresult=mysqli_query($link,$query);                                    $genrerow=mysqli_fetch_assoc($genreresult);
                            echo $genrerow['genre_name'];
                            echo "</td>
                                <td>{$row['game_dev']}</td>
                                <td>{$row['game_pub']}</td>
                                <td>{$row['game_type']}</td>
                                <td><a href=\"{$row['game_site']}\" target=\"_blank\"><img src=\"images/officialwebsite.png\" title=\"Official website\"/></a>
                                    <a href=\"{$row['game_trailer']}\" target=\"_blank\"><img src=\"images/youtube.png\" title=\"Trailer\"/></a></td>
                                <td>{$row['game_note']}</td>
                            </tr>";


                           }

                           echo"</table>";
                           }

                            else
                            {
                            echo "There don't seem to be any confirmed nor rumoured releases this month!";
                            }
                    ?>

问题是日期是无效的。因此,您可以简单地检查日期是否有效,如果不有效,则如下所示显示
00

list($year, $month, $day) = explode("-", $row['game_release']);
if (checkdate($month, $day, $year)) {
    echo "<td> ". (new DateTime($row['game_release']))->format("j") ." </td>";
} else {
    echo "<td>00</td>";
}
while($row=mysqli_fetch_assoc($result)) {
    list($year, $month, $day) = explode("-", $row['game_release']);
    if (checkdate($month, $day, $year)) {
        $date = (new DateTime($row['game_release']))->format("j");
    } else {
        $date = "00";
    }

    echo"<tr>
            <td> ". $date ." </td>
            <td>{$row['game_name']}</td>
        <td>";
    //...
list($year、$month、$day)=爆炸(“-”,$row['game_release');
if(检查日期($month,$day,$year)){
echo.”(新日期时间($row['game_release'])->格式(“j”);
}否则{
回声“00”;
}
因此,您的代码应该如下所示:

list($year, $month, $day) = explode("-", $row['game_release']);
if (checkdate($month, $day, $year)) {
    echo "<td> ". (new DateTime($row['game_release']))->format("j") ." </td>";
} else {
    echo "<td>00</td>";
}
while($row=mysqli_fetch_assoc($result)) {
    list($year, $month, $day) = explode("-", $row['game_release']);
    if (checkdate($month, $day, $year)) {
        $date = (new DateTime($row['game_release']))->format("j");
    } else {
        $date = "00";
    }

    echo"<tr>
            <td> ". $date ." </td>
            <td>{$row['game_name']}</td>
        <td>";
    //...
while($row=mysqli\u fetch\u assoc($result)){
列表($year,$month,$day)=爆炸(“-”,$row['game_release');
if(检查日期($month,$day,$year)){
$date=(新的DateTime($row['game_release'])->格式(“j”);
}否则{
$date=“00”;
}
回声“
“$date。”
{$row['game_name']}
";
//...

Invalid==不完整。输入,输出。给PHP实际值,它将是一个非常快乐的露营者。嘿,约翰。我的辩护:我的意思是与我工作的上下文相关的不完整。我意识到日期对PHP是无效的。嘿,这非常有效!我不知道从哪里开始。非常感谢!