PHP - 如何ELSE一个while语句?

时间:2013-06-15 09:07:56

标签: php mysql if-statement while-loop

好吧,我正在建立一个游戏网站,我有一个搜索栏,用户输入他想要找到的游戏。我有类似的东西(这是一个测试,不需要阻止SQL注入):

<?php

if ($_REQUEST['search']){

    $searched = $_POST['searched'];
    $gamesearched = mysql_query("SELECT * from games WHERE name like '%$searched%'");

    while($write=mysql_fetch_array($gamesearched)){
    echo "Found it!" 
    }

}else{
echo "Search something";
}


?>

我不能在while语句中使用else,所以我该如何显示类似&#34;没有找到的游戏&#34;。

我正在尝试使用它但不起作用:P

while(($write=mysql_fetch_array($gamesearched)) != null){
echo "found";
}else{
echo "not found";
}

3 个答案:

答案 0 :(得分:5)

为什么不在while语句中包装if语句?

if ($_REQUEST['search']){

    $searched = $_POST['searched'];
    $gamesearched = mysql_query("SELECT * from games WHERE name like '%$searched%'");

    if(mysql_num_rows($gamesearched) > 0){

         while($write=mysql_fetch_array($gamesearched)){
         echo "Found it!" 
         }

     } else {

          echo "not found";

     }

}

答案 1 :(得分:2)

正如您所注意到的,您无法在else后写while,因为它是一个循环,而不是if之类的控制结构。即使语法看起来非常相似,这也完全不同。

解决问题的一种可能性是使用布尔变量:

$found = false
while(...){
  $found = true;
  // something more here
}
if(!$found){
  echo "nothig found";
}

答案 2 :(得分:-4)

如果您只搜索一个项目,则可以打破从早期循环

while(..) {
  ..
  if ( found_smth ) break;
}