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 = mysqli_query(...);
if (mysqli_num_rows($result) > 0) {
    $data = mysqli_fetch_assoc($result);
    ... echoes go here ...
}

注意mysqli_num_rows()的使用

你的测试完全无效。$result只会FALSEfs 查询本身失败(语法错误、数据库不可访问等)。没有数据的查询仍然是有效的查询结果,并且将是正确的结果句柄......恰好代表一个空集。

于 2013-09-20T16:21:09.863 回答
1

我认为你不应该检查查询的执行(!$result),因为查询实际上是执行的,所以$result不会是假的,因为它发生在表不存在的情况下。

您应该只检查返回的行mysqli_num_rows == 0,这意味着没有返回的行

于 2013-09-20T16:21:25.630 回答