PHP IF ELSE语句问题

时间:2014-02-25 03:13:12

标签: php

我的if语句在我的while循环内部似乎没有正确执行。我想这可能与我的逻辑有关。对我来说,它似乎应该工作,但必须有一些我失踪的东西。我需要While循环来运行并计算每次它。在第四个循环中,我需要运行if语句中的代码,但似乎永远不会发生。有人可以提供解决方案吗?

<?php
    $input = $_GET['input'];//Note to self $input in the name of the search feild
    $terms = explode(" ", $input);
    $query = "SELECT * FROM content WHERE ";

    foreach ($terms as $each){
        $i++;
        if ($i == 1)
            $query .= "keywords LIKE '%$each%' ";
        else
            $query .= "OR keywords LIKE '%$each%' ";
    }

    // connecting to our mysql database
    mysql_connect("localhost", "username", "password");
    mysql_select_db("database");

    $query = mysql_query($query);
    $numrows = mysql_num_rows($query);

    if ($numrows > 0){
        for($i=0; $i < $numrows; $i++){
        while ($row = mysql_fetch_assoc($query)){

            $id = $row['id'];
            $title = $row['title'];
            $description = $row['description'];
            $keywords = $row['keywords'];
            $link = $row['link'];
            $plink = $row ['plink'];
            $views = $row ['views'];

                if($i== 4){
            echo '<td valign="top" "width="248" height="100%">
            <table width="100%" border="0">
             <tr>
                 <td align="center" valign="top"><a href='.$link.'>
                 <img src='.$plink.'width="200" height="151" vspace="5" />
            <br><b><a href='.$link.'>'.$title.'</b></a>
              <br><strong><span style="line-height:20px">Total views: '.$views.'</span></strong>
                 </td>
                  </tr>
                 </table>
                 </td><tr>';            
            }

            else{

            echo '<td valign="top" "width="248" height="100%">
            <table width="100%" border="0">
             <tr>
                 <td align="center" valign="top"><a href='.$link.'>
                 <img src='.$plink.'width="200" height="151" vspace="5" />
            <br><b><a href='.$link.'>'.$title.'</b></a>
              <br><strong><span style="line-height:20px">Total views: '.$views.'</span></strong>
                 </td>
                  </tr>
                 </table>'
                           ;

                }
                     }


        }



        }

    else
        echo "No results found for \"<b>$input</b>\"";



    // disconnect
    mysql_close();
?>

2 个答案:

答案 0 :(得分:0)

for循环$i == 1的第一次迭代中,您的条件将无法执行。但是,while循环将清空结果集,以便在for循环的第二次和后续迭代中没有要获取的行。您的if条件不会再次遇到。

答案 1 :(得分:0)

你为每一行循环一次,但在你的for循环中,你有一段时间来获取所有行。你需要摆脱for循环。

所以不要这样做:

    for($i=0; $i < $numrows; $i++){
    while ($row = mysql_fetch_assoc($query)){

你应该这样做:

    $i = 0;
    while ($row = mysql_fetch_assoc($query)){
        $i++;
        ....