2016-06-13 6 views
1

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

<?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'; 
    } 
} 
?> 

table:booktable

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

+1

попробовать, как, что, если ($ вывода == 'Table1') –

+0

@ Kaushal шаха еще получать тот же о/р, без изменений. – 007mrviper

+0

вы уже запрашиваете с 'status = 'booked'', что означает, что вся таблица, которую она возвращает, недоступна, объясните больше, что вы пытаетесь добиться. –

ответ

1

Ваших $ выхода переменной перезапись последнего значения строки ваше последнее значение является Таблица3, которая = Table1

ПРИЧИНА: вашего цикл, а заканчивается раньше, если заявление и последний магазин значения выходных переменных $

Код:

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>'; 
      } 
     } 
} 
+0

Я понял, почему у меня получился неправильный результат, но я сделал то, что вы упоминали, но я все еще не получаю право o/p. Даже если '$ output == 'Table1'' где' $ output = Table1', я получаю 'Таблица доступным', но это должно быть' Таблица недоступна'. Можете ли вы объяснить, почему это происходит? – 007mrviper

+0

@ 007mrviper может быть проблема с пробелом использовать trim или var_dump ($ output) before if statement и проверить, что это возвращает –

+0

Я попытался использовать 'if (trim ($ output) == 'Table1')' & 'var_dump ($ output) == 'Table1' ', но нет изменений в o/p. Кроме того, я вручную проверил db, но нет пробелов. – 007mrviper

1

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

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'; 
} 

Это будет печатать что-то вроде этого:

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'; 
    } 
} 
+0

Я хочу проверить, доступна ли «Таблица1» или нет. Я не хочу отображать информацию о других таблицах. Итак, как я могу достичь результата правильно? – 007mrviper

+0

@ 007mrviper У меня есть обновленный ответ. Просто проверьте, является ли это 'Table1', но я предлагаю изменить ваш выбор, чтобы получать информацию о' Table1', если это только необходимая таблица для вас. – Gvidas

+0

Я отредактировал мой код и сделал это, как вы сказали, но он не отображает никакого результата , Если я добавлю инструкцию 'else', тогда она отображает информацию оператора' else', но результат (ы) оператора 'if' не отображается. Аналогично предыдущей проблеме. – 007mrviper

0

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

if(in_array('Table1',$tables)) 
0
$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'; 
} 
Смежные вопросы