Equals返回php中的所有值

时间:2014-02-06 12:05:05

标签: php

在这段代码中,我尝试使用CategoryId从数据库中过滤一些数据记录,但它返回所有类别Id。在我的数据库中,类别ID是INT字段。

如果我回显$data['Category'];,那么它会显示所有categoryId's但是在变量比较后它不起作用。

我的意思是if($cat == 1)不起作用(它不是过滤/显示数据)

 //Some coding here    
       <section id="section-1">
           <div class="vs-content">
                   <div class="widgets-container">
<?php
                mysql_connect("localhost", "root", "") or die(mysql_error()); 
                mysql_select_db("mydb") or die(mysql_error());
                $sql = "SELECT Id,Title,description,Image,Category from News ";
                $query = mysql_query($sql); 
?>
                 <div class="blocks">

 <?php              while($data = mysql_fetch_array($query)){       
                    $cat =     $data['Category'];               
                        if($cat == 1){
?>                      
                        <h3 style="margin-left:   10px;"><?php echo $data['Title'] ?></h3>
                        <div style="width: 50%; margin-right: auto; margin-left: auto;">
                        <img src="images/drink2.jpg" /></div>
                        <img src="data:image/jpeg;base64,<?php base64_encode( $data['Image'] )?>"/> 
                        <p style="color: white; font-size: 0.6em;"><?php echo $data['Description'] ?></p>
<?php
                        }
                    }
?>                                  
                </div>
                <div class="blocks">

<?php               while($data = mysql_fetch_array($query)){   
     $cat = $data['Category'];
                    if($cat == 2){
?>                      
                        <h3 style="margin-left: 10px;"><?php echo $data['Title'] ?></h3>
                        <div style="width: 50%; margin-right: auto; margin-left: auto;">
                        <img src="images/drink2.jpg" /></div>
                        <img src="data:image/jpeg;base64,<?php base64_encode( $data['Image'] )?>"/>
                        <p style="color: white; font-size: 0.6em;"><?php echo $data['Description'] ?></p>
<?php
                        }
                    }
?>                                  
                </div>
                <div class="blocks">

<?php               while($data = mysql_fetch_array($query)){   
                    $cat = $data['Category'];
                    if($cat == 3){
?>                      
                        <h3 style="margin-left: 10px;"><?php echo $data['Title'] ?></h3>
                        <div style="width: 50%; margin-right: auto; margin-left: auto;">
                        <img src="images/drink2.jpg" /></div>
                        <img src="data:image/jpeg;base64,<?php base64_encode( $data['Image'] )?>"/> -->
                        <p style="color: white; font-size: 0.6em;"><?php echo $data['Description'] ?></p>
    <?php
                        }
                    }
       ?>                                   
                </div>                  
          </div>
        </div>

       // Some coding here

2 个答案:

答案 0 :(得分:4)

为什么你不能在选择查询中检查条件,试试这个,

$sql = "SELECT Id,Title,description,Image,Category from News where Category='1'";

<强>更新

<div class="blocks">            
 <?php      
   while($data = mysql_fetch_array($query)){       
         $cat =  $data['Category'];               
         if($cat == 1){ ?>   
             //Your code             
         <?php  }else if($cat == 2){ ?>                   
             // Your code     
         <?php  }else{ ?>                         

         <?php }?>   
    <?php }?>                     
  </div>

答案 1 :(得分:4)

为什么不过滤数据库查询中的记录?这意味着更改数据库查询,如下所示:

  

$ sql =“SELECT Id,Title,description,Image,Category from News WHERE Category = 1”;

通过采用这种方法,将更少的数据返回给PHP,数据库调用将执行得更快一些:)

更新:您只需要三个不同的&lt; div class =“blocks”&gt;如果它们中的内容将会不同。否则,您只需使用单个while循环,并使用SQL语句排序的数据按顺序输出所有类别的内容。

 //Some coding here    
       <section id="section-1">
           <div class="vs-content">
                <div class="widgets-container">
<?php
                mysql_connect("localhost", "root", "") or die(mysql_error()); 
                mysql_select_db("mydb") or die(mysql_error());
                $sql = "SELECT Id,Title,description,Image,Category from News ORDER BY Category";
                $query = mysql_query($sql); 
?>
                    <div class="blocks">

 <?php              while($data = mysql_fetch_array($query)){       
?>                      
                        <h3 style="margin-left:   10px;"><?php echo $data['Title'] ?></h3>
                        <div style="width: 50%; margin-right: auto; margin-left: auto;">
                        <img src="images/drink2.jpg" /></div>
                        <img src="data:image/jpeg;base64,<?php base64_encode( $data['Image'] )?>"/> 
                        <p style="color: white; font-size: 0.6em;"><?php echo $data['Description'] ?></p>
<?php
                    }
?>                                  
                    </div>
                </div>
           </div>
    </section>
   // Some coding here

如果您只需要为单个类别呈现数据,那么请使用SQL中的WHERE子句(请参阅第一个示例)来过滤减少SQL调用和提高性能所需的数据。