【问题标题】:How to dislpay all animals that are status = 1 in PHP如何在PHP中显示所有状态= 1的动物
【发布时间】:2021-10-23 19:17:49
【问题描述】:

我正在为一个项目制作一个采用网站。

我正在尝试显示status = 1 的所有动物,但status = 0 一直出现在类别中的动物。

我的代码有问题吗?欢迎提出建议和指正。

谢谢!

function.php

function get_animals($cat_id='', $animal_id='')
{
   
    global $con;

    
    $query = "SELECT * FROM animals WHERE status= 1";

    
   
    
    if($cat_id!='')
    {
        $query = "SELECT * FROM animals WHERE category_name='$cat_id'";

        
    }
    

    if ($animal_id!='')
    {
        $query = "SELECT * FROM animals WHERE id=$animal_id";
    }

   
    return $result = mysqli_query($con,$query);
   
    

}

这是我的animals.php文件

<?php 
     $cat_id = '';
     if(isset($_GET['id']))
     {
         $cat_id = mysqli_real_escape_string($con,$_GET['id']);
     }
     $particular_animal = get_animals($cat_id);
     
?>
    
    <!-- End Navigation -->

        <!-- Product Grid -->
<div class="container mt-5 ">
    <div class="row">

        <?php

            if(mysqli_num_rows($particular_animal))
            {


                while($row = mysqli_fetch_assoc($particular_animal))
                {
                    ?>

                    
        <div class="col-md-4 product-grid">
            <div class="row">
            <div class="image border border-info bg-light">


                <a href="animal_details.php? a_id=<?php echo $row ['id'] ?>">
                    <img src="admin/image/<?php echo $row['img']?>" class="w-100" alt="">
                </a>
                    <h4 class="text-center mt-2 text-info font-weight-bold"><?php echo $row ['name']  ?></h4>
                    <p class="text-center mt-2"><?php echo $row ['gender']  ?></p>
            </div>
            </div>
        </div>
        
        <?php

                    
                }

            }
            else
            {
                echo "record not here";
            }

        ?>


       
    </div>
</div>

【问题讨论】:

  • 如果设置了cat_id,则对status = 1没有限制。如果需要,必须扩展where子句。

标签: php mysqli


【解决方案1】:

当设置了$cat_id$animal_id 时,您将覆盖您的$query(具有状态的那个)。相反,添加到您的第一个查询的 WHERE 子句:

$query = "SELECT * FROM animals WHERE status= 1";
if($cat_id != '') {
    $query .= " AND category_name='$cat_id'";
}
if ($animal_id != '') {
    $query .= " AND id=$animal_id";
}

【讨论】:

    【解决方案2】:

    如果您的 function 获得类别 ID 或动物 ID,则您的查询将被覆盖并且您的 status 条件将丢失。这是一个单命令解决方案:

    function get_animals($cat_id='', $animal_id='')
    {
        return mysqli_query($con,"SELECT * FROM animals WHERE status= 1" .
                                 ($cat_id ? " AND category_name = {$cat_id} " : "").
                                 ($animal_id ? " AND animal_id = {$animal_id} " : ""));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多