2016-06-13 2 views
1

私はbooktableという名前のテーブルを持っています。クエリを実行すると出力はになりますが、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

私はwhile looparray_key_exists一部を入れた場合のO/PはO/Pに変化がないすなわち、ループ内の文を入れないと同じになります。
だから、私はこのアプローチに挑戦しましたが、以前と同じようにo/pの権利を得ていません。このアプローチで何が問題になっていますか?

+1

($出力== '表1') –

+0

もしまだ同じO/Pを取得Kaushalシャー、変更なし@そのようにしてみてください。 – 007mrviper

+0

あなたはすでに 'status = 'booked''を使ってクエリを実行しています。つまり、返されるすべてのテーブルが利用できないということです。何を達成しようとしているのかをもっと説明してください。 –

答えて

1

であるあなたの最後の値が表3である最後の行の値を使用して$出力変数の上書き=表1

理由:!あなたのwhileループが終了する前であれば$出力変数内の文と最後の値ストア

コード:

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'となっていても、 'Table available'を取得していますが、' Table not available'でなければなりません。あなたはなぜこれが起きているのかを説明することができますか? – 007mrviper

+0

@ 007mrviperは空白の問題を使用することがあります。if文の前にtrimまたはvar_dump($ output)を使用して、それが何を返すかを確認してください –

+0

'if(trim($ output)== 'Table1')'& 'var_dump )== '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であなたはすべてのテーブルを介して実行してのみ、あなたはチェックしてみますので。そして、非常に奇妙な方法で。私はそれを正しく理解している場合、あなたの場合は、完全な文は次のようになります。

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

のみTable1のために、それは次のようになります:

これは、このようなものを出力します

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']; 
    if($output == 'Table1'){ 
     echo $output.'<br>'.'Table not available'; 
    } 
} 
+0

'Table1'が利用可能かどうかチェックしたいと思います。私は他のテーブルに関する情報を表示したくありません。だから、どのようにして正しい結果を得ることができますか? – 007mrviper

+0

@ 007mrviper私は自分の答えを更新しました。単にそれが 'Table1'であるかどうかを確認するだけですが、あなたに必要なテーブルであれば' Table1'に関する情報を取るように選択を変更することをお勧めします – Gvidas

+0

私のコードを編集しましたが、結果は表示されませんでした。 'else'ステートメントを追加すると' else'ステートメントの情報が表示されますが、 'if'ステートメントの結果は表示されません。これまでに遭遇した問題と同じです。 – 007mrviper

0

あなたのコードを維持したい場合は、代わりにarray_key_exists()

in_array()を使用0
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'; 
} 
関連する問題