-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 ($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 确实会中断循环并立即从整个方法返回。将在一段时间内执行的唯一代码将是一次。

<?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 回答
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 回答