如果 mysql 中不存在任何记录,则不显示


Don't display if no records exist in mysql

>我有这个表格来搜索mysql数据库中的名字

<form action="search.php" method="GET">
<input type="text" placeholder="Search" name="name">
<input type="submit" value="Search">

这是搜索.php

<?php
        name = $_GET['name'];
        require_once("connect.php");
        $records = $connect->query("SELECT * FROM Userlists WHERE Name = '$name'");
        echo 
        "<table>
        <thead>
        <tr>
        <th>Name</th> 
        <th>Email</th>
        <th>Description</th>            
        </tr>
        </thead>
        <tbody>";
        if (mysqli_num_rows($records)== 0){
              echo "No data available for that name specified";
            }
            else {
              while($row=mysqli_fetch_array($records)) {
            $name = $row['Name'];
            $email = $row['Email'];
            $desc = $row['Desc']; 
            echo 
            "<tr>
            <td>".$name."</td>
            <td>".$email."</td>   
            <td>".$desc."</td>                                     
            </tr>";
           }
        }
        echo    
        "</tbody>
        </table>";
?>
因此,当我搜索数据库中存在的名称时,它正确显示没有问题,

但是当我搜索数据库中不存在的名称时,问题就出现了。我希望它只
显示 "No data available for that name specified"输出,但我也会在输出中看到空表,如这个------------>图像

那么如何摆脱输出的空表呢?

只要在桌子外面 pu if....

<?php
    name = $_GET['name'];
    require_once("connect.php");
    $records = $connect->query("SELECT * FROM Userlists WHERE Name = '$name'");
    if (mysqli_num_rows($records)== 0){
       echo "No data available for that name specified";
    } else {

    echo 
    "<table>
    <thead>
    <tr>
    <th>Name</th> 
    <th>Email</th>
    <th>Desc</th>            
    </tr>
    </thead>
    <tbody>";

          while($row=mysqli_fetch_array($records)) {
        $name = $row['Name'];
        $email = $row['Email'];
        $desc = $row['Desc']; 
        echo 
        "<tr>
        <td>".$name."</td>
        <td>".$email."</td>   
        <td>".$desc."</td>                                     
        </tr>";
       }

    echo    
    "</tbody>
    </table>";  
   }
?>

按如下方式更改您的 if 子句并记住添加exit()die()函数,如果数据库中没有任何数据,这将结束您的php,如果有,它将开始创建表一次,并重复填充数据库上给定数据行的表行。

if (mysqli_num_rows($records)== 0){
    echo "No data available for that name specified";
    exit();
} else {
    echo 
    "<table>
    <thead>
    <tr>
    <th>Name</th> 
    <th>Email</th>
    <th>Desc</th>            
    </tr>
    </thead>
    <tbody>";
    while($row=mysqli_fetch_array($records)) {
        $name = $row['Name'];
        $email = $row['Email'];
        $desc = $row['Desc']; 
        echo 
        "<tr>
        <td>".$name."</td>
        <td>".$email."</td>   
        <td>".$desc."</td>                                     
        </tr>";
      }
    echo    
    "</tbody>
    </table>";
}

移动echo "<table> <thead> <tr> <th>Name</th> <th>Email</th> <th>Desc</th>
</tr> </thead> <tbody>";

到 if 语句中。这样,它只会在数据可用时显示表格!

        $name = $_GET['name'];
        require_once("connect.php");
        $records = $connect->query("SELECT * FROM Userlists WHERE Name = '$name'");
if (mysqli_num_rows($records)== 0){
    echo "No data available for that name specified";
}
else {
    echo
    "<table>
        <thead>
        <tr>
        <th>Name</th>
        <th>Email</th>
        <th>Desc</th>
        </tr>
        </thead>
        <tbody>";

    while ($row = mysqli_fetch_array($records)) {
        $name = $row['Name'];
        $email = $row['Email'];
        $desc = $row['Desc'];
        echo
            "<tr>
            <td>" . $name . "</td>
            <td>" . $email . "</td>
            <td>" . $desc . "</td>
            </tr>";
    }
    echo "</tbody></table>";
}

试试这个。但不要忘记像htmlspecialchars和real_escape_string一样逃避$_GET['name']