Сервер MySQL не возвращает правильный вывод

У меня есть таблица с именем booktable как показано на booktable экрана. Когда я запускаю запрос, вывод является Table availabe хотя он не может быть недоступен для Table not available.
Первоначально я пытался проверить условие без использования array_key_exists и решения упомянуты ниже, но никто из них не работал.

 <?php require 'dbconnect.php'; //connection to db is success $search = "SELECT Table_list FROM booktable WHERE status='booked'"; $table_query = mysqli_query($dbconnect,$search); $row_check = mysqli_num_rows($table_query); if($row_check>=1){ $tables = array(); while($row=mysqli_fetch_assoc($table_query)){ $output = $row['Table_list'].'<br>'; echo $tables[] = $output; //returns o/p: Table1, Table2, Table3 } if(array_key_exists('Table1',$tables)){ //trying to check if 'Table1' is in the array echo 'Table not available'; //if 'Table1' exists should echo this line }else{ echo'Table available'; } } ?> в <?php require 'dbconnect.php'; //connection to db is success $search = "SELECT Table_list FROM booktable WHERE status='booked'"; $table_query = mysqli_query($dbconnect,$search); $row_check = mysqli_num_rows($table_query); if($row_check>=1){ $tables = array(); while($row=mysqli_fetch_assoc($table_query)){ $output = $row['Table_list'].'<br>'; echo $tables[] = $output; //returns o/p: Table1, Table2, Table3 } if(array_key_exists('Table1',$tables)){ //trying to check if 'Table1' is in the array echo 'Table not available'; //if 'Table1' exists should echo this line }else{ echo'Table available'; } } ?> 

Таблица: booktable

Если я поместил array_key_exists внутри while loop то o / p будет таким же, как не помещать оператор внутри цикла, то есть нет изменений в o / p.
поэтому, я попытался пойти с таким подходом, но я не получаю права o / p как раньше. Что не так с этим подходом?

Related of "Сервер MySQL не возвращает правильный вывод"

Это неправильный подход к тому, что вы пытаетесь сделать:

 while($row=mysqli_fetch_assoc($table_query)){ echo $output = $row['Table_list'].'<br>'; } if($output==('Table1')){ echo'Table not available'; }else{ echo'Table available'; } в while($row=mysqli_fetch_assoc($table_query)){ echo $output = $row['Table_list'].'<br>'; } if($output==('Table1')){ echo'Table not available'; }else{ echo'Table available'; } 

Потому что, while вы просматриваете все таблицы, и только тогда вы пытаетесь проверить. И очень странно. В вашем случае, если я правильно понял, полное предложение должно выглядеть так:

 while($row=mysqli_fetch_assoc($table_query)){ $output = $row['Table_list']; echo $output.'<br>'.'Table not available'; } в while($row=mysqli_fetch_assoc($table_query)){ $output = $row['Table_list']; echo $output.'<br>'.'Table not available'; } 

Это напечатает что-то вроде этого:

 Table1 Table not available Table2 Table not available Table3 Table not available 

Только для Table1 это должно выглядеть так:

 while($row=mysqli_fetch_assoc($table_query)){ $output = $row['Table_list']; if($output == 'Table1'){ echo $output.'<br>'.'Table not available'; } } в while($row=mysqli_fetch_assoc($table_query)){ $output = $row['Table_list']; if($output == 'Table1'){ echo $output.'<br>'.'Table not available'; } } 

Ваша переменная $ output переписывает с последним значением строки ваше последнее значение – Table3, которое равно! = Table1

REASON: ваш цикл while заканчивается до того, как оператор и последнее значение сохраняются в переменной $ output

Код:

 if ($row_check >= 1) { while ($row = mysqli_fetch_assoc($table_query)) { $output = $row['Table_list'] ; if ($output == 'Table1') { echo $output .' Table not available <br>'; } else { echo $output .' Table available <br>'; } } } 

Если вы хотите сохранить свой код, используйте in_array() вместо array_key_exists()

 if(in_array('Table1',$tables)) 
 $tables = array(); while($row=mysqli_fetch_assoc($table_query)){ $tables[] = $row['Table_list'].'<br>';//value stored: Table1, Table2, Table3 } print_r($tables) //displays the stored data on '$tables', this line is optional $a = print_r($tables[0]); $b = print_r($tables[1]); $c = print_r($tables[2]); $tables1 = array($a,$b,$c); if(in_array('Table1',$tables1)){ echo 'Table not available'; }else{ echo'Table available'; } в $tables = array(); while($row=mysqli_fetch_assoc($table_query)){ $tables[] = $row['Table_list'].'<br>';//value stored: Table1, Table2, Table3 } print_r($tables) //displays the stored data on '$tables', this line is optional $a = print_r($tables[0]); $b = print_r($tables[1]); $c = print_r($tables[2]); $tables1 = array($a,$b,$c); if(in_array('Table1',$tables1)){ echo 'Table not available'; }else{ echo'Table available'; }