-2

次のphpコードがあります。

<?php




if (!isset($_REQUEST['search'])){

    while(($write=mysql_fetch_array($gamesearched)) != null){
    echo "Found!";
    }else{
    echo "No results";
    }

    }
?>

そして、それは私にエラーを与えています:

解析エラー: 構文エラー、C:\php\www\Gameplay\backgame.php 行 41 の予期しない 'else' (T_ELSE)

4

5 に答える 5

2

elsePHP はinwhileステートメントをサポートしていません。代わりにセンチネルを使用する必要があります。

于 2013-06-15T08:47:01.347 に答える
1

ifあなたの???はどこですか?あなたが行方不明ですIF

if/else 構造が次のようになっていることにも注意してif() {} -> else {} ください。

于 2013-06-15T08:46:43.700 に答える
1

右中括弧を置き忘れたと思います。以下の可能な正しいコードを参照してください。

if (!isset($_REQUEST['search'])){
  while($write=mysql_fetch_array($gamesearched)){
    if($write != null) {
      echo "Found!";
    }else{
      echo "No results";
    }
  } 
}

また

while(($write=mysql_fetch_array($gamesearched)) != null){
  if (!isset($_REQUEST['search'])){
    echo "Found!";
  } else {
    echo "No results";
  }
}
于 2013-06-15T08:47:15.453 に答える
0

PHP では、ステートメントに節を含めるwhileことはできません。少なくとも 1 回実行されたかどうかをelse示す外部の何かが必要です。while

このようなものはどうですか?

$total = mysql_num_rows($gamesearched);
if ($total > 0) {
    while (($write=mysql_fetch_array($gamesearched)) !== false) {
        echo "Found!";
    }
} else {
    echo "No results";
}

この場合、開始前に検出された行の総数を調べましたが、カウンターをゼロに設定してから while ループ内でインクリメントすることから開始することもできました。それは次のようになります。

$total = 0;
while (($write=mysql_fetch_array($gamesearched)) !== false) {
    $total++;
    echo "Found!";
}
if ($total == 0) {
    echo "No results";
}

これ以上行がない場合にmysql_fetch_array()返されることに注意してください。そのため、while 条件も更新しました。false

そうは言ってもmysql_*、新しいコードで関数を使用しないのには十分な理由があります。詳細といくつかのより良い代替手段については、この質問を参照してください:なぜ PHP で mysql_* 関数を使用しないのですか?

于 2013-06-15T09:24:29.703 に答える
-1

1)

if(xxxx){
   //do if
}else{
   //do else
}

2)

if(1):
    echo '123';
else:
    echo '456';
endif;
于 2013-06-15T09:35:54.503 に答える