我的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();
?>
答案 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++;
....