Php虽然如果被称为函数只返回1

时间:2013-06-06 18:52:54

标签: php

我是一个完整的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);

3 个答案:

答案 0 :(得分:0)

因为你在while语句中间返回。它将在第一次迭代时突破WHILE()并返回FIRST结果。

你应该尝试这样的事情:

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。

答案 1 :(得分: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

答案 2 :(得分:0)

返回会破坏循环并立即从整个方法返回。将在一段时间内执行的唯一代码将是一次。

<?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);
?>

我希望这可以帮助您完成工作。 感谢