ELSE条件在PHP的while循环中不起作用

时间:2018-08-27 14:58:29

标签: php mysqli

<?php
    $conn=mysqli_connect("localhost","id6755695_artemi8","sharanod"
    ,"id6755695_user_info");
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    $department = $_POST["department"];
    $year = $_POST["year"];
    $sem = $_POST["semester"];
    $reg = $_POST["regulation"];

    $sql = "SELECT  book_name, author, edition, image FROM dept_search WHERE 
    department='$department' AND year='$year' AND semester='$sem' AND 
    regulations='$reg' ";
    $result=mysqli_query($conn,$sql);

    while($row = mysqli_fetch_assoc($result))
    {
        if($row)
        {
            echo "<br>";
        ?>
        <img src=" <?php echo $row['image']; ?> " height="300" width="300">

        <?php
        echo "<br>";

        echo "<b>",$row['book_name'],"</b>";
        echo "<br>";
        echo $row['author'];
        echo "<br>";
        echo $row['edition'];

        }
        else
        {
            echo "sorry book not found";
        }
    }

    mysqli_close($conn);


?>

请使用此代码帮助我,我正在建立一个图书馆管理系统。问题是,如果给定的值存在,那么我应该能够显示这些书,如果数据库中没有找到,那么我必须显示该书,但是必须显示,但是在if之后的while循环中,否则else不运行.....

4 个答案:

答案 0 :(得分:0)

您正在遍历从“ mysqli_fetch ...”命令返回的所有行。您的“ if”和“ else”是无用的-您将始终有行。如果没有任何行,那么您甚至都不会输入while循环的正文。

您需要对返回的行进行计数(count($ row)),并显示一条消息,如果计数小于一则找不到任何内容。

答案 1 :(得分:0)

正如其他人指出的那样,您的else语句将永远不会运行。如果您已经在while循环中,则肯定会定义$row,因此,它将永远不会运行。

可以做的是,请事先检查查询是否返回了实际结果,如下所示:

$result=mysqli_query($conn,$sql);

if($result->num_rows > 0){
   while($row = mysqli_fetch_assoc($result)){
      echo "<br>";
      ?>
      <img src=" <?php echo $row['image']; ?> " height="300" width="300">
      <?php
      echo "<br>";
      echo "<b>",$row['book_name'],"</b>";
      echo "<br>";
      echo $row['author'];
      echo "<br>";
      echo $row['edition'];
  }
}else{
    echo "Sorry book not found";
}

答案 2 :(得分:0)

您可以尝试使用mysqli_num_rows ..示例代码,如下所示:

$rowcount=mysqli_num_rows($conn,$sql);
if($rowcount!=0){
$result=mysqli_query($conn,$sql);

 while($row = mysqli_fetch_assoc($result))
 {
    echo "<br>";
?>

答案 3 :(得分:0)

您需要做的就是将条件从if($row)更改为if($other_condition)

当前,您只是在检查$row内是否有东西,除非您将其分配给null,否则这种情况永远不会出错。因为$row会有什么地方,那么将执行while循环,而将执行while循环时,则将执行条件。

您只需要简单地做一件事,那就是改变下面给出的条件...

if($row['value'] == 'something')