我有一个名为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';
}
}
?>
如果我将array_key_exists
部分放在while loop
内,则o / p与不将该语句置于循环内相同,即o / p没有变化。
所以,我试着采用这种方法,但我没有像以前那样正确地使用o / p。这种方法有什么问题?
答案 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';
}