MySQL服务器没有返回正确的输出

时间:2016-06-13 07:25:26

标签: php

我有一个名为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';
    }
}
?>

table:booktable

如果我将array_key_exists部分放在while loop内,则o / p与不将该语句置于循环内相同,即o / p没有变化。
所以,我试着采用这种方法,但我没有像以前那样正确地使用o / p。这种方法有什么问题?

4 个答案:

答案 0 :(得分:1)

你的 $ output 变量用最后一行值覆盖你的最后一个值是Table3,这是!= Table1

原因:你的while循环在if语句和最后一个值存储在$ 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>';
            }
      }
}

答案 1 :(得分: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';
   }
}

答案 2 :(得分:0)

如果您想保留代码,请使用in_array()代替array_key_exists()

if(in_array('Table1',$tables))

答案 3 :(得分: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';
}