-1

私は完全な PHP 初心者 (およびその点については他の言語) です。私が知りたいのは、なぜこれが 1 しか返さないのかということです。ユーザーのプレイヤー数に関係なく。

また、いくつかのページで<select>メニューに表示したいのですが、どうすればいいですか?

function get_players($aid) {

$query = query("SELECT name FROM player WHERE account_id = $aid");
while ($row = fetch_assoc($query)) {

    return $row['name'];

}


}


echo get_characters(1337);
4

3 に答える 3

0

while ステートメントの途中で戻ってくるからです。最初の反復で WHILE() から抜け出し、最初の結果を返します。

次のようなことを試してみてください。

function get_players($aid) {
  $query = query("SELECT name FROM player WHERE account_id = $aid");
  $names = array();
  while ($row = fetch_assoc($query)) {
    $names[] = $row['name'];
  }
}

print_r( get_characters(1337) );

PS: mysql_* 関数は使用しないでください。少なくとも、MySQLI または PDO を学んでください。

于 2013-06-06T18:55:24.410 に答える
0

関数のどこかで戻ると、関数はすぐに終了し、関数には戻りません。したがって、最初の結果のみが返されます。

次のような配列にデータを保存します。

while ($row = fetch_assoc($query)) {
    $return_data[] = $row['name'];
}
// and then return the data:
return $return_data;

また、PHP 5.5 を使用yieldしている場合は、関数をジェネレーターとして使用するために使用できます。

また、mysql_* (PHP 5.5 以降では非推奨) を使用せず、mysqli または PDO を使用してください。


正しい関数を呼び出しましたか? 関数があり、get_playersその関数を呼び出しますget_characters

于 2013-06-06T18:56:14.757 に答える
0

Return はループを中断し、メソッド全体からすぐに戻ります。しばらく実行されるコードは 1 回だけです。

<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM Persons");

while($row = mysqli_fetch_array($result))
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br>";
  }

mysqli_close($con);
?>

これがあなたの仕事を成し遂げるのに役立つことを願っています。ありがとう

于 2013-06-06T18:56:22.803 に答える