我是一个完整的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);
答案 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);
?>
我希望这可以帮助您完成工作。 感谢