如何将查询结果放入任意大的数组中?

时间:2017-07-23 00:09:49

标签: php arrays loops mysqli

我有一个有朋友列表的网站,等等。我使用while循环迭代列表,我想使用foreach循环。

while循环的工作原理与它应该没有问题。我不问如何使用foreach循环。但是当我尝试更改while循环时,我意识到以下代码;

   <?php

$my_id = $_SESSION['user_id'];
$request = "SELECT `request_from` FROM `friend_requests` WHERE `request_to`='$my_id' ";
$request_query = mysqli_query($conn, $request);
while ($run_request = mysqli_fetch_array($request_query)){
$from = $run_request['request_from'];
$username = getuser($from, 'username');

echo"<table>";
echo "<tr><td>".$username."</td></tr>";
echo "</table>";
echo "<br />";
}


output: 

sammy davis jr
frank sinatra
dean martin

不包含包含朋友的 AN 数组,它包含任意数量的数组,其中只包含一个元素。就像我做的那样

print_r($runrequest);

output:

Array ( [0] => 20 [request_from] => 20 ) 
Array ( [0] => 21 [request_from] => 21 ) 
Array ( [0] => 19 [request_from] => 19 ) 

所以我的问题是,有没有办法让我重写我的 mysqli_query ,这样我就只生成一个任意大的数组,然后用foreach循环迭代。与我生成任意数量的数组的查询相反,我必须使用while循环进行迭代。

1 个答案:

答案 0 :(得分:1)

$run_request是每次迭代只有1行/结果的数组。如果你想要一个包含所有数据的数组在循环中构建它。您不需要getuser功能,您可以使用join通过一个查询获取用户的姓名。

$request = "SELECT u.name as name FROM `friend_requests` as fr 
            join users as u 
            on u.userid = fr.request_from 
            WHERE `request_to`='$my_id' ";
$request_query = mysqli_query($conn, $request);
while ($run_request = mysqli_fetch_array($request_query)){
     $users[] = $run_request['name'];
}
print_r($users);

或者您可以使用http://php.net/manual/en/mysqli-result.fetch-all.php