0

テーブルは存在しますが空です。

テーブルにデータがないので、何もエコーせずに読み取るのを待っていますif ($notable1 == 'on')が、エコー.$from_month.し、セパレータ"| "

(テーブルが存在しない場合、コードは正常に動作します。)

問題はどこですか?見つからない。

foreach ($datesBooked_1_month as $value)
{                       
    if ($result = mysqli_query($bdd, "SELECT * FROM `".$tab_from_month_year."` WHERE day = ".$value." ")) 
    {                   

        $data = (mysqli_fetch_assoc($result)); 

        echo $data['day'].'/'`.$from_month.`"| ";
        if ($data['roomtype_1'] <= 3) { echo $data['roomtype_1']."| " ;}   else {echo "X| "; }
        if ($data['roomtype_2'] <= 3) { echo $data['roomtype_2']."| " ;}   else {echo "X| "; }
        if ($data['roomtype_3'] <= 3) { echo $data['roomtype_3']."| " ;}   else {echo "X| "; }
        if ($data['roomtype_4'] <= 3) { echo $data['roomtype_4']."| " ;}   else {echo "X| "; }
        if ($data['roomtype_5'] <= 3) { echo $data['roomtype_5']."| " ;}   else {echo "X| "; }
        if ($data['roomtype_6'] <= 3) { echo $data['roomtype_6']."<br/>";} else{echo"X<br/>";}                                                              

    }
    else if (!$result){ $notable1 = 'on'; }         

}
if ($notable1 == 'on')
    {                   
        foreach ($datesBooked_1_month as $value) 
        {                       
        echo $value. "- Free #<br />";                  
        }
    }   
4

2 に答える 2

1

(!$result)クエリは実際に実行されるため、$resultテーブルが存在しない場合に発生するように false にならないため、クエリの実行を確認するべきではないと思います。

返された行を確認する必要がありますmysqli_num_rows == 0。これは、返された行がないことを意味します

于 2013-09-20T16:21:25.630 に答える
1

空の結果でも有効な結果です。エコーを行う前に、データの存在を明示的にテストする必要があります。

$result = mysqli_query(...);
if (mysqli_num_rows($result) > 0) {
    $data = mysqli_fetch_assoc($result);
    ... echoes go here ...
}

mysqli_num_rows()の使用に注意してください

あなたのテストは完全に無効です。クエリ自体が失敗した$result場合にのみ発生します(構文エラー、データベースに到達できないなど...)。FALSE結果がデータにならないクエリは、依然として有効なクエリ結果であり、適切な結果ハンドルになります...これはたまたま空のセットを表しています。

于 2013-09-20T16:21:09.863 に答える