У меня есть таблица с именем 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'; } } ?>
Если я поместил array_key_exists
внутри while loop
то o / p будет таким же, как не помещать оператор внутри цикла, то есть нет изменений в o / p.
поэтому, я попытался пойти с таким подходом, но я не получаю права o / p как раньше. Что не так с этим подходом?
Это неправильный подход к тому, что вы пытаетесь сделать:
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'; }